Search in Rotated Sorted Array
·
PS/LeetCode
문제https://leetcode.com/problems/search-in-rotated-sorted-array/description/입력1 결과ans: Int = target이 위치한 인덱스, 먄약 없다면 -1해석이전 문제와 비슷한 이분탐색 문제지만 오름차순의 배열이 회전되어 있어 한번 더 조건을 걸어줘야한다. 그 조건은 이분탐색의 필수적인 조건인 정렬 여부, 즉 mid를 중심으로 정렬이 올바르게 되어있는 구간인가 아닌가를  판별 또한 mid를 통해 찾을 것이기 때문에, while문의 조건이 가 아닌 된다.코드class Solution { func search(_ nums: [Int], _ target: Int) -> Int { let n = nums.count var ..
Find Minimum in Rotated Sorted Array
·
PS/LeetCode
문제https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/description/입력n == nums.length1 결과ans: Int = 배열의 최솟값해석정렬이 됐지만 회전까지 들어가 있어 문제의 본질을 파악하는데 함정을 파뒀다.하지만 시간 복잡도 제약이 O(logn)인 것을 보고 이분 탐색이라는 것을 눈치 챌 수 있었다. mid를 기준으로 right 값이 큰지 작은 지를 판단하여크다면 오른쪽 부분은 버려주는 형식으로 진행코드class Solution { func findMin(_ nums: [Int]) -> Int { let n = nums.count if n == 1{ return n..
Maximum Product Subarray
·
PS/LeetCode
문제https://leetcode.com/problems/maximum-product-subarray/description/입력1 결과ans: Int = 곱 부분 배열의 최댓값해석이전 maxSubarray는 단순 합이라, 흐름이 하나였지만곱은 말 그대로 음수와 양수에 따른 흐름이 2개이므로 변수가 하나 더 필요했다.그래서 음수를 고려한 최대 음수 변수와, 최대 양수 변수를 계속 가져가며 반복마다 갱신한다.코드class Solution { func maxProduct(_ nums: [Int]) -> Int { let n = nums.count if n == 1 { return nums[0] } var minProduct = nums..
Maximum Subarray
·
PS/LeetCode
문제https://leetcode.com/problems/maximum-subarray/description/입력1 결과ans: Int = 가장 큰 부분수열의 합해석누적합이 현재 값보다 작으면, 이전 누적합을 버리고 그렇지 않으면 계속 누적한다.이 때 누적할 때마다 이전의 최대값과 계속 비교해서 저장한다.코드class Solution { func maxSubArray(_ nums: [Int]) -> Int { let len = nums.count var currentMax = nums[0] // 누적합 var ans = nums[0] // 최종 결과 for i in 1..
Product of Array Except Self
·
PS/LeetCode
문제https://leetcode.com/problems/product-of-array-except-self/description/입력2 결과ans: [Int] = 자신을 제외한 곱 배열해석첫 반복문에서 모든 값을 순회하며 0 개수를 count와 동시에 0을 제외환 모든 곱의 결과를 계산 실질적인 계산일 때 2가지 분기로 구분 1) 현재 값이 0일 때- 다른 0이 존재하면 무조건 0, 그렇지 않으면 total 2) 현재 값이 0이 아닐 때- 0이 한번이라도 존재하면 0, 아니면 total / 현재 값  코드class Solution { func productExceptSelf(_ nums: [Int]) -> [Int] { var zeroCount: Int = 0 let to..
Best Time to Buy and Sell Stock
·
PS/LeetCode
문제https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/입력1 결과ans: Int = 최대 이익해석매수 금액은 최소로하고 매도 금액은 최대로 진행코드class Solution { func maxProfit(_ prices: [Int]) -> Int { if prices.count