代码随想录:链表
[TOC]
代码随想录—链表嗨嗨,越是到了期末周,越是想开摆。复习什么的,60分万岁吧。有些东西真不感兴趣了。
这次是来到了链表篇(毕竟链表和数组在数据结构中很是重要)
这里我基本都是使用的迭代法(递归法得慢慢修炼修炼再考虑了)
(从大一c语言学习的时候,就觉得大多数情况下都能约定好使用的是虚拟头结点就好了)
所以推荐使用链表时都使用一个虚拟头结点(力扣人好像喜欢叫哑结点)
偶尔的话可以使用哨兵结点,用于减少判断条件或者越界
先大概概括一下基本题型吧
链表的建立以及增删查改
虚拟头结点的使用,temp临时指针等
边界条件判断(什么时候使用current !=null 什么时候使用current.Next !=null)
拓展: 双向链表,循环链表(记得试试约瑟夫环这个经典问题)
反转链表
原地反转(注意使用指针保存下一个结点)
新建头结点然后使用头插
删除链表倒数第N个结点
直接暴力,第一次先算链表长度,第二次遍历删除该结点
使用前后指针,先让快指针走N步,然后慢指针开始出发。
判断是否有环
让你判断是否有环
快慢指针
哈希表
寻找环的入口
快慢 ...
代码随想录:数组篇
[TOC]
数组篇总结首先跟着代码随想录刷了一刷,大概接触到题型有二分法、移除元素/排序、滑动窗口、模拟行为
二分法
确定好左右边界,以及mid的变化就好
移除元素
for循环暴力!
快慢指针: 快指针去探索找寻符合条件的宝藏,然后交给慢指针
使用堆栈或者队列
排序
首尾双指针
滑动窗口
双层for循环暴力! 其实这种也是滑动窗口,只是完全是无脑滑动(以边界条件为条件)
双指针滑动,两个for循环(上面是n*n,这个是2n),且移动条件为场景需求条件(使用hashmap进行维护)
模拟行为
害。。听天由命,画图吧。
可能这里更多的是用go去实现吧,因为go语言我也是刚学,然后语法都不太稳固那种,更别说使用什么api了,所以感觉就是算法和go都拿。有思路但是go很卡壳的话就先用Java写一下然后查go的语法然后用go写
二分法34. 在排序数组中查找元素的第一个和最后一个位置给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。
如果数组中不存在目标值 target,返回 [ ...