加油,不要过度焦虑(꒪ꇴ꒪(꒪ꇴ꒪ ;)
public class Code01 {
public int search(int[] nums, int target) {
int left = 0;
int rihgt = nums.length - 1;
while (left <= rihgt) {
int middle = left + ((rihgt - left) >> 1);
if (nums[middle] == target)
return middle;
else if (nums[middle] > target)
rihgt = middle - 1;
else
left = middle + 1;
}
return -1;
}
}
public class Code02 {
public int removeElement(int[] nums, int val) {
int slow = 0;
int fast = 0;
while (fast < nums.length) {
if (nums[fast] == val) {
fast++;
} else {
nums[slow] = nums[fast];
slow++;
fast++;
}
}
return slow;
}
}
public class Code03 {
public int[] sortedSquares(int[] nums) {
int[] res = new int[nums.length];
int left = 0;
int right = nums.length - 1;
int index = nums.length - 1;
while (left <= right) {
if (nums[left] * nums[left] <= nums[right] * nums[right]) {
res[index] = nums[right] * nums[right];
right--;
index--;
} else {
res[index] = nums[left] * nums[left];
left++;
index--;
}
}
return res;
}
}
public class Code04 {
public int minSubArrayLen(int target, int[] nums) {
int slow = 0;
int fast = 0;
int sum = 0;
int res = Integer.MAX_VALUE;
while (fast < nums.length) {
sum += nums[fast];
while (sum >= target) {
res = Math.min(res, fast - slow + 1);
sum -= nums[slow];
slow++;
}
fast++;
}
return (res == Integer.MAX_VALUE) ? 0 : res;
}
}
public class Code05 {
public int[][] generateMatrix(int n) {
int x = 0, y = 0;
int i, j;
int middle = n / 2;
int loop = n / 2;
int offset = 1;
int count = 1;
int[][] res = new int[n][n];
while ((loop--) > 0) {
i = x;
j = y;
for (; j < n - offset; j++)
res[i][j] = count++;
for (; i < n - offset; i++)
res[i][j] = count++;
for (; j > y; j--)
res[i][j] = count++;
for (; i > x; i--)
res[i][j] = count++;
x++;
y++;
offset++;
}
if (n % 2 == 1)
res[middle][middle] = count;
return res;
}
}
public class Code06 {
public int searchInsert(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int middle = left + ((right - left) >> 1);
if (nums[middle] == target)
return middle;
else if (nums[middle] > target)
right = middle - 1;
else
left = middle + 1;
}
return (right + 1);
}
}
public class Code07 {
public int[] searchRange(int[] nums, int target) {
int index = binary(nums, target);
if (index == -1) return new int[]{
-1, -1};
int left = index;
int right = index;
while ((left - 1) >= 0 && nums[left - 1] == nums[index]) {
left--;
}
while ((right + 1) < nums.length && nums[right + 1] == nums[index]) {
right++;
}
return new int[]{
left, right};
}
private int binary(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
while (left <= right) {
int middle = left + ((right - left) >> 1);
if (nums[middle] == target)
return middle;
else if (nums[middle] > target)
right = middle - 1;
else
left = middle + 1;
}
return -1;
}
}
public class Code01 {
public int mySqrt(int x) {
int left = 0;
int right = x;
int res = -1;
while (left <= right) {
int middle = left + ((right - left) >> 1);
if ((long) middle * middle <= x) {
res = middle;
left = middle + 1;
} else {
right = middle - 1;
}
}
return res;
}
}
public class Code02 {
public boolean isPerfectSquare(int num) {
int left = 0;
int right = num;
while (left <= right) {
int middle = left + ((right - left) >> 1);
if ((long) middle * middle == num) {
return true;
} else if ((long) middle * middle > num) {
right = middle - 1;
} else {
left = middle + 1;
}
}
return false;
}
}
public class Code03 {
public int removeDuplicates(int[] nums) {
int slow = 0;
int fast = 0;
int flag = Integer.MAX_VALUE;
while (fast < nums.length) {
if (flag != nums[fast]){
nums[slow] = nums[fast];
slow++;
flag = nums[fast];
}
fast++;
}
return slow;
}
}
public class Code04 {
public void moveZeroes(int[] nums) {
int slow = 0;
int fast = 0;
while (fast < nums.length) {
if (nums[fast] != 0) {
swap(nums, slow, fast);
slow++;
}
fast++;
}
}
private void swap(int[] nums, int left, int right) {
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
}
}