算法基础
文章平均质量分 66
无言以对,沉默不语,随你随你。
这个作者很懒,什么都没留下…
展开
-
代码随想录代码训练营Day10|用栈实现队列、用队列实现栈
用队列模拟栈,只需要一个队列。用两个队列que1和que2实现队列的功能,que2其实完全就是一个备份的作用,把que1最后面的元素以外的元素都备份到que2,然后弹出最后面的元素,再把其他元素从que2导回que1。输出数据pop或peek,若输出栈为空则将输入栈的全部数据依次弹出并压入输出栈,这样输出栈从栈顶往栈底的顺序就是队列从队首往队尾的顺序。栈以底层容器来完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(也就是说我们可以控制使用哪种容器来实现栈的功能)。输入数据push,直接放进去。原创 2023-12-25 22:25:01 · 321 阅读 · 0 评论 -
代码随想录算法训练营Day8|反转字符串中的单词
移除空格的函数,写的思路:遍历整个字符串,每次移动指针i++,就执行一次判断,只要遍历到的s[i]不是空格,就表明还在一个单词内,将这个地址中的元素用s[slow]来记录,其实还是在s这个字‘字符型数组’内,只不过用了不同的指针变量名(索引名)来进行标记,同时里面的字母顺序和空格数也发生了变化。在不使用额外空间的前提下,先将多余的空格移除,包括单词之间的和整个字符串首尾处的,(单词与单词之间只需要一个空格来分割,即两个空格不可以是前后关系)然后将整个字符串反转,最后将每个单词逐个反转,还要将空格添加回去。原创 2023-12-23 20:11:20 · 342 阅读 · 1 评论 -
代码随想录算法训练营day2| leetcode977有序数组的平方、209长度最小的子数组、59螺旋矩阵
每次滑动这个窗口就进行一次求和,与前一次的和进行比较,如果比较小就更新,比较大就进入下一轮的求和计算,这里和暴力求解思路有点类似,不同的地方在于我们借助指针start的移动,避免了部分重复,减少了运算的数据规模。定义左右两个指针i,j分别从数组的左右两端进行移动,每次都移动一位,先计算当前位置的元素的平方,比较当前左右指针所在位置的元素的平方,大的就把它放到result[k],同时k--,让result的倒数下一个位置等待赋值;然后填充右侧第一列,填充范围是(0,n-1),此时变的是行标 i 的值。原创 2023-12-15 11:49:05 · 1036 阅读 · 0 评论 -
代码随想录算法训练营day1|leetcode704二分查找、27移除元素
初次查找范围是整个数组,每次查找范围[left,right]的中值,相等就直接返回下标right,不相等就向左右最大子区间的mid值进行移动,即让right=1/2*(left+right),或者让right=right+1/2*(right-left),如此不断实现一次次的移动,使查找范围变为原来的1/2,1/2的1/2,1/2的1/4……用了循环检索出和目标val相等的数组元素,nums[i],然后用下一个nums[i+1]覆盖掉nums[i],利用第二重循环,把后面的把前面的依次覆盖掉。原创 2023-12-13 22:11:36 · 1546 阅读 · 1 评论