LeetCode 704 二分查找
给定一个 n
个元素有序的(升序)整型数组 nums
和一个目标值 target
,写一个函数搜索 nums
中的 target
,如果目标值存在返回下标,否则返回 -1
。
左闭右闭写法
class Solution {
public int search(int[] nums, int target) {
int left = 0;
int right = nums.length - 1;
int middle = 0;
while(left <= right){
middle = (left + right)/2;
if(nums[middle] > target){
right = middle - 1;
}else if(nums[middle] < target){
left = middle + 1;
}else{
return middle;
}
}
return -1;
}
}
左闭右开写法
class Solution {
public int search(int[] nums, int target) {
int left = 0;
int right = nums.length;
int middle = 0;
while(left < right){
middle = (left + right)/2;
if(nums[middle] > target){
right = middle;
}else if(nums[middle] < target){
left = middle + 1;
}else{
return middle;
}
}
return -1;
}
}
LeetCode 27 移除元素
暴力解法
class Solution {
public int removeElement(int[] nums, int val) {
int size = nums.length;
for(int i = 0; i < size; i++){
if(nums[i] == val){
int temp = nums[i];
for(int j = i; j < nums.length - 1; j++){
nums[j] = nums[j + 1];
}
nums[nums.length-1] = temp;
i--;
size--;
}
}
return size;
}
}
双指针法
class Solution {
public int removeElement(int[] nums, int val) {
int slow = 0;
for(int fast = 0; fast < nums.length; fast++){
if(nums[fast] != val){
nums[slow] = nums[fast];
slow++;
}
}
return slow;
}
}