Day4
啊啊啊啊,什么玩意,第一次因为测评没过,约好的面试取消了,好尴尬呀,还有一家厦门的C/C++电话面,是一家我还挺喜欢的公司,面的稀烂,只能安慰自己我现在手上至少有一个offer
-
有效括弧,
/*开辟一个栈,左括号入栈、右括号与栈中最后进入的是否组成一队,最后再查看栈中是否空*/
-
合并有序链表,
/*首先判断l1是空则输出l2,l2是空输出l1 然后进行比较l1.val<l2.val,则l3.next=l1.val,li=li.next,l3=l3.next*/ /*使用递归思想,l1.next和l2*/
-
删除相同项(有序)
/*因为是有序的,所以可设两个指针,pre,p比较pre和p的值,不相等pre,p都指向下一个,否则p下一个,pre不动*/ /*直接使用数组,一个for,当if(a[i]==a[i++])*/ int x=0; for(int i=0;i<nums.length;i++){ if(nums[x]==nums[i]){ countinue; }else{ nums[++x]==nums[i]; } //如果最后一项和倒数第二项不相同,则插入最后一项, if(i == nums.length - 1 && nums[i - 1] != nums[i] ){ nums[++x] = nums[i]; } }
-
原地移除值
/*添加哨兵,和上面x的作用一样,先等就x不加i++,*/ int x=0; for(int i=0;i<nums.length;i++){ if(nums[x]==nums[i]) { countinue }else{ nums[++x]=nums[++i]; } }
-
搜索插入位置
/*target依次跟数组中的值比较,当查找到位置之后记录下来,不等时哨兵++*/ if(nums[i]<target) {j++;} C++//重点,C++的int 定义不能再for里面 int i; for( i=0;i<nums.size();i++){ if(nums[i]>=target) return i;//找到大于等于目标值的数,返回当前下标 } return i;