随笔分类 - 代码随想录刷题笔记
跟着carl哥学算法
摘要:哈希表总结 常用数据结构总结 数组 有些时候, 使用数组可以直接充当简单的哈希表, 数组元素的下标作为 key 值,元素的值作为 value 值 比如统计一个单词各个字符出现的次数,因为字母 26 个数目是有限的,所以数组的下标也是有限的,可以轻松实现。 使用数组的情况, 数组的下标一般都是有限的,
阅读全文
摘要:力扣刷题 142.环形链表 II-- day4 题目分析 这道题目难度较大, 特别是要求空间复杂度为 O(1)的时候 如果不追求空间复杂度的话, 可以使用 hash 表 把目前遍历的节点指针存入 hash 表, 当下次在 hash 表中找到该节点时, 即找到了答案 空间复杂度为 O(1)的解法: 较
阅读全文
摘要:力扣刷题 面试题 02.07. 链表相交--day4 题目分析 这道题相对简单, 注意找到指针相等的节点。 先要预处理这两个链表, 使其长度一样 解法 ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) { int size
阅读全文
摘要:力扣刷题 19.删除链表的倒数第 N 个节点--day4 题目分析 这道题目比较简单, 熟练掌握单链表中删除节点的操作 解法 ListNode *removeNthFromEnd(ListNode *head, int n) { ListNode *dummyHead = new ListNode(
阅读全文
摘要:力扣刷题 24.两两交换链表中的节点--day4 题目分析 还是那句话, 需要先模拟一下节点交换的过程 将整个过程细分为一个个小过程,以此类推下去 注意画图分析 设置三个指针 post cur pre 注意 1. 节点的交换过程 2. 指针的递推 解法 ListNode *swapPairs(Lis
阅读全文
摘要:力扣刷题 707.设计链表--day3 吸取经验 OR 不足之处 对于 c++中的类的基础知识不熟, 以及结构,结构与类,结构和类中的方法与属性 好好看懂这个结构设计: class MyLinkedList { public: struct ListNode { int val; ListNode
阅读全文
摘要:力扣刷题 59 螺旋矩阵 II--day2 题目分析 还是要多在纸上模拟, 这道题目要小心边界条件, 保持一致性 一条边一条边处理, 区间是左闭右开 vector<vector<int>> generateMatrix(int n) { vector<vector<int>> result(n, v
阅读全文
摘要:力扣刷题 209 长度最小的子数组--day2 题目分析 🫥🫥🫥 在写代码前, 还是要好好分析, 最好在纸上把题目的过程模拟以下 思路清晰,代码才会不写的很乱, 像这道题,一开始很难想到用滑动窗口的, 只有在纸上模拟了子数组的变化过程才写的出来! 今天时间有点紧, 题解就不分析过多了, 我的解
阅读全文
摘要:力扣刷题 977.有序数组的平方--day2 题目分析 这道题目, 乍一看就是一个排序问题嘛,大不了计算完平方后, 再用个插入排序或者冒泡排序罢了 但是, 题目告诉我们, 这个数组原来就是有序的, 所以我们要用好 这个特点, 从而简化代码 数组在平方后, 后面那些原来为正数的顺序并没有改变, 前面的
阅读全文
摘要:力扣刷题 704.二分查找--day1 解法 一、暴力解法 //暴力解法 int search(vector<int>& nums, int target) { for(int i = 0; i<nums.size(); i++){ if(nums[i] == target) return i; }
阅读全文
摘要:力扣刷题 27.移除元素--day1 解法 一、暴力解法 采用数组移动覆盖的方式来移除元素 时间复杂度为 O(n^2) //暴力解法 int removeElement(vector<int>& nums, int val) { int size = nums.size(); for(int i =
阅读全文

浙公网安备 33010602011771号