배열 첫 index = L
배열 마지막 index = R
pivot = (L+R)/2
int search(int[] nums, int target) {
int left = 0;
int right = num.length-1;
while(left<=right) {
int pivot = (left+right)/2
if(nums[pivot]==target) {
return pivot;
} else if(nums[pivot]<target) {
left = pivot + 1;
} else {
right = pivot -1;
}
return -1; //target을 못찾았을경우
}
키워드 : 0이 아닌 숫자를 왼쪽으로 옮긴다.
0인 index와 0이 아닌 index를 서로 swap 한다.
void moveZereos(int[] nums] {
int wIdx = 0;
for(int idx=0; idx<nums.length; idx++) {
if(num[idx] != 0) {
swap(nums[widx], nums[idx]);
wIdx++;
}
}
sliding 개념
724번
int pivotIndex(int[] nums) {
int sum = 전체합(nums);
int leftSum = 0;
int rightSum = 0;
int pastPivotNum = 0;
for(int idx=0; idx<nums.length; idx++) {
int num = nums[idx];
rightSum = rightSum - num;
leftSum = leftSum + pastPivotNum;
if(leftSum == rightSum) {
return idx;
}
pastPivotNum = num;
}
return -1;
}