对于数组的原地移除元素想到的便是双指针
1.首先对确定要移除在哪,读完题目便知我们可以把应该移除的元素放在最后,便可以先定义一个
指针j来放在数组末尾,当我们要移除元素时便对两个元素继续交换,以把其放在最后。
2.要对遍历的方式有了解,我们不能使用for循环来遍历数组,因为会漏数比较。所以使用while循环。
class Solution {
public int removeElement(int[] nums, int val) {
int j=nums.length-1;
int i=0;
while(i<=j)
{
if(nums[i]==val)
{
int tmp=nums[j];
nums[j]=nums[i];
nums[i]=tmp;
j--;
} else i++;
}
return i;
}
}
思路:
1.对于在一个有序数组中查找一个数非常简单,可以暴力for遍历,当然更好的方法还是二分法查找
2.二分法比较简单,只不过要注意取值是否规范
class Solution {
public int search(int[] nums, int target) {
int r=nums.length-1,l=0;
while(r>=l)
{
int zhong=(r-l)/2+l;
if(nums[zhong]==target)
{
return zhong;
}
else if(nums[zhong]>target)
{
r=zhong-1;
}
else l=zhong+1;
}
return -1;
}
}
第一次写博客,手拙,不过是一个很好的开端,对于自己也是一个总结。种树最好的时间是在十年与今天!!!