代码随想录刷题 day 1

704. 二分查找

这个问题用while() iterative 来解决;

第一次写错的地方有:

将middle写在while loop之外,middle没有实时更新;

== 写成了 =

middle的赋值写成了(tail-head)/2; 没有加上head, 原因是做题的时候没考虑到取值为后半数组的情况;

c++中一个小数变量赋值给int貌似会默认floor. 假设tail =5. head =0, 则middle = head +(tail-head)/2 = 2;

27. 移除元素

解法1:.暴力法两个for 循环嵌套

这里要注意 vector 的size() 函数返回的是数组元素的个数,数组下标数用size() -1 以及for循环中 i< length 还是<= length, 以及最后return的值最后要确认下。第一次这里写错了

解法2:双下标方法

一个快下标一个慢下标, 最后慢下标输出返回的数组;

如果快下标的数不等于要查找的数字,那么将快下标的数值给慢下标; 如果等于要查找的数,那么快下标还是照样会在for循环中fast++ 但是慢下标没有slow++, 这样等于要查找的那个数就被过滤掉

你可能感兴趣的:(数据结构,算法)