1、Remove Duplicates from sorted arrays
class Solution {
public int removeDuplicates(int[] nums) {
int i=0,j=0;
if(nums==null)
return 0;
while(j<nums.length){
while(j<nums.length&&nums[i]==nums[j])
j++;
if(i<j&&j<nums.length){
nums[i+1]=nums[j];
i++;
}
}
return i+1;
}
}
写程序思考
1)每次写程序从“数据结构”出发想实现方法(只要想到了方法从理论上来讲都是可以实现的,只不过是“效率”和“代码量”的问题)。
2)然后考虑时间和空间效率(即所谓的时间空间复杂度,但也不妨碍大局撒~)。
3) 看到数组,请注意越界问题。
class Solution {
public int removeDuplicates(int[] nums) {
if (nums.length == 0) return 0;
int i = 0;
for (int j = 1; j < nums.length; j++) {
if (nums[j] != nums[i]) {
i++;
nums[i] = nums[j];
}
}
return i + 1;
}
}
2、传参
1)按值传递
2)按引用传递
i:就对象而言:不是传“对象本身”,传对象引用或者说是对象的首地址(注意数组);
ii:就引用本身而言:引用本身是按值传递的(参数为引用的副本:此时副本也指向对象即对象此时有两个引用);
3、java的访问限制
1)private:只能被该类的对象访问;
2)default: 可以被同一个包中的类的对象访问;
3)protected:类本身+其子类;
4)public:everything;