ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

里扣刷题第一周(10.10-10.17)

2021-10-18 14:34:04  阅读:137  来源: 互联网

标签:扣刷题 遍历 链表 right 数组 10.10 left 10.17 指针


数组+链表+哈希表 题目总结。


前言

第一周主要学习了基础的数据结构知识,数组,哈希表和链表。


一、数组

定义:数组是存放在连续内存空间上的相同类型数据的集合。
具体代表性题目记录:
1)34题:用二分法解决。定义两个指针(left,right),分别指向数组的头和尾,然后移动。
难点:区间的开和闭。分两种情况讨论:[left, right]和[left, right)。根据题目具体情况具体分析。
2)26题:用快慢指针解决。定义两个指针(slow, fast),fast先动,slow跟上,当两指针指的数值相同时,slow停以下,最后返 回slow。
3)54,59题:旋转矩阵,具体就是分成四组遍历,顺序为上、右、下、左。
难点:指针更新条件(很繁琐~需要后续再刷)。
总结:1.数组元素只能覆盖不可删除(重点)。
2.相关题目:26、27、24、35、69、76、209、367、844、977等

二、链表

定义:通过指针串联在一起的结构,节点由数域和指针构成,有一个头head,结尾有个null。对链表的操作有增、删、插。
具体代表性题目记录:
1)203题:删除val的节点。两种情况讨论,val在头和在中间。最好先设定一个虚拟头(dummy),方便操作。最好是要将删除的节点在内存中delete。最后返回头部。
难点:区间的开和闭。分两种情况讨论:[left, right]和[left, right)。根据题目具体情况具体分析。
2)707题:设计链表。包括头插,尾插,index前插,删。其中index前插和前删利用while(index–),找到index前的节点,仔细揣摩,能更好理解链表结构(后续需要再刷。
3)206、24题:反转链表。也可以用递归,但是我没搞得太明白,所以就用正常方法。
4)19题:删除倒数第N个节点。还是用快慢指针,fast先走N+1步,slow再走,走到要删除的前一个节点。
5)02.07题:链表相交。求出两个表长度,让两个表尾对齐,遍历找相同。注意找的是指针,不是val。
6)142题:环形链表。分两步,先判断有没有环,s走一步,f走两步,直到f==s。再确定环的入口,从相遇点开始,一个从head出发,一个从f出发,每个走一步,直到相遇。

总结:1. 学会并熟悉链表的基本操作,具体问题再具体分析。
2. 一些特殊情况例如相交、环形这些问题记住具体思路。

三、哈希表

定义:一对key和val结构,可以根据key直接访问value,牺牲空间换取时间,常见的有set,map,数组。
具体代表性题目记录:
1)242题:寻找有效字母异位词。先建立一个26长度的数组nums当成哈希表,先遍历s字符串,将每个字母出现次数先存到表里,具体nums[s[i]-‘a’]++;接着遍历t,具体nums[t[i]-‘a’]–;最后如果nums[i]有不是0的,就false。
难点:区间的开和闭。分两种情况讨论:[left, right]和[left, right)。根据题目具体情况具体分析。
2)349题:两个数组的交集。遍历第一个数组,存入nums1;遍历nums2,如果在nums1中找到相同key的元素,插到result。
3)202题:快乐数。首先熟悉位操作:个位n%10,十位(n/10)%10,百位(n/10/10)%10;先编写一个统计sum的函数;重点是考虑会出现sum重复循环的情况。
4)454题:四数相加。定义一个map映射,a,b的和为key,出现次数为value,再遍历c和d,找到key为(0-(c+d)的元素,返回value。
5)383题:去重+小写。遍历magzine做++,遍历ransomNote做- -。

总结:1. 将几种哈希表的底层实现搞清楚,且key是否有序,数值是否可以重复,查询效率搞清楚。
2. 一些特殊情况例如相交、环形这些问题记住具体思路。

四、总结
提示:这里对文章进行总结:
本周为刚接触C++和刷题的第一周,主要从最基础的数据结构开始学习,做到先分析题目,然后看题解,最后自己独立写一遍,万事开头难呜呜呜呜。
下周计划:字符串+双指针+栈和队列。

五、参考资料

https://programmercarl.com/

标签:扣刷题,遍历,链表,right,数组,10.10,left,10.17,指针
来源: https://blog.csdn.net/PETERPARKERRR/article/details/120822241

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有