
Leetcode刷题记录
刷题思想记录
小小洪人
这个作者很懒,什么都没留下…
展开
-
LC 数组中两个数的最大异或值
题目 代码 // 参考这个链接:https://leetcode-cn.com/problems/maximum-xor-of-two-numbers-in-an-array/solution/qian-zhui-shu-by-kai1314/ // https://leetcode-cn.com/problems/maximum-xor-of-two-numbers-in-an-array/solution/li-yong-yi-huo-yun-suan-de-xing-zhi-tan-xin-suan原创 2021-03-10 22:13:18 · 173 阅读 · 0 评论 -
回文对
题目 代码 // https://leetcode-cn.com/problems/palindrome-pairs/solution/guan-fang-de-da-an-kan-de-wo-tou-teng-hao-shi-da-b/ // 主要思路:第一种思路:马拉车算法,这个没看 // 第二种思路:枚举前缀 与 后缀 // 1:当前字符串反转后的字符串还在当前字符串中 // 2: abxxx反转后,判断xxx是否为回文字符串,并且ba是否在原来字典中 // 3: xxxab反转后,判断ab是否在原原创 2021-03-10 22:06:17 · 205 阅读 · 0 评论 -
138. 复制带随机指针的链表
题目 **注意:**题目是真的绕!!!当然了也是自己不够熟练指针的题目!!! 继续加油骚年!!! 代码 /* // Definition for a Node. class Node { public: int val; Node* next; Node* random; Node(int _val) { val = _val; next = NULL; random = NULL; } }; */ // 不原创 2020-12-23 20:53:54 · 117 阅读 · 1 评论 -
2. 两数相加
代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(..原创 2020-12-23 00:23:39 · 159 阅读 · 0 评论 -
21. 合并两个有序链表
题目 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), nex原创 2020-12-22 23:41:05 · 115 阅读 · 0 评论 -
328. 奇偶链表
题目 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), nex原创 2020-12-22 15:29:17 · 125 阅读 · 0 评论 -
203.移除链表元素
题目 代码 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ // 注意事项:遇到链表的问题,建议加入虚拟头节点,确保链表不为空 class Solution { public: ListNode* removeElements(L原创 2020-12-19 10:35:07 · 106 阅读 · 1 评论 -
19. 删除链表的倒数第N个节点
题目: 代码: // 方法1:两次遍历,先确定链表的长度。 // 之后再根据n序号,删除特定指针 // 此方法需要判断链表长度为1的情况 、 删除头指针、删除尾指针三种特殊情况 // 方法2:快慢指针 // 1 : 要设置虚拟节点dummpyHead 指向 head // 2 : 设定双指针fast 和 slow,初始都指向虚拟头节点dummpy Head // 3 : 移动fast指针,直到fast 与 slow之间间隔n个节点 // 4 : 同时移动fast 与 slow节点,直到fast为unul原创 2020-12-14 20:25:36 · 127 阅读 · 0 评论 -
160. 相交链表
题目: 代码: // 方法1: 简单暴力搜索 // 方法2:快慢指针 // 消除两指针距离差的方法1:两个指针分表指向不同指针的头部,判断其中一个指针是否走到结尾, // 如果两个指针存在交集,另一个与末端距离则是两链表的 长度差。再通过长链表指针先走的方式消除长度差,最终两链表即 可同时走到相交点。 // 消除两指针距离差的方法2 : 拼接两指针:长指针距离: a + c,短指针长度: b + c // 何时性相遇: a + c + b = b + c + a // 此时就会相遇 // 走到尽头见不到你原创 2020-12-14 11:11:11 · 78 阅读 · 0 评论 -
142. 环形链表 II
答案 // 代码解析:https://leetcode-cn.com/problems/linked-list-cycle-ii/solution/linked-list-cycle-ii-kuai-man-zhi-zhen-shuang-zhi-/ // a为快指针距离链表入口的距离!!!,b为链表环的节点数目 // 慢指针走的路程是:a + nb就能到链表环入口 // 当快慢指针相遇时,此时慢指针还差a步就能到达链表环入口(第一次相遇时慢指针已经走了nb步) // 快指针指到开头即可 /** * D.原创 2020-12-10 20:16:07 · 117 阅读 · 0 评论 -
合并区间
题目 解题思路 对乱序数组进行排序,变为升序数组。方便后面进行查找 先定义一个i指向起始位置,并保存i指向的数值大小 从i的下一个指向j开始遍历,找到不满足条件的区间 合并区间,并将i跳到j的位置 代码 class Solution { public: // 题目:类似求一个并集 // 排序 + 双指针 vector<vector<int>> merge(vector<vector<int>>& intervals) {原创 2020-09-25 14:44:26 · 147 阅读 · 0 评论 -
搜索插入位置
题目 解题思路 很经典的二分查找的题目,借此题熟悉二分查找的经典解题思路 代码 class Solution { public: int searchInsert(vector<int>& nums, int target) { // 此种是暴力搜获的方法 // int len = nums.size(); // int insert_index = -1, find_index = 0; // for(i原创 2020-09-25 14:30:48 · 93 阅读 · 0 评论 -
Letcode - 寻找数组的中心索引
题目 - 寻找数组的中心索引 定义数组 中心索引 的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。 如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。 解题思路: (左边数之和) * 2 + 中间数 = 所有数之和 实现代码: class Solution { public: int pivotIndex(vector<int>& nums) { int size = nums.si原创 2020-09-18 14:52:18 · 150 阅读 · 1 评论