
刷题历程
csdn_cjc
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
刷题历程 - 导航
堆 leetcode-1054. 距离相等的条形码原创 2020-12-16 21:10:23 · 101 阅读 · 0 评论 -
leetcode - 11. 盛最多水的容器
题目描述 基本思路 假设有两个坐标点(i, ai)和(j, aj),且j > i,aj > ai。 另有坐标点(k, ak),i < k < j。坐标点i和坐标点j形成的容器容积比坐标点 i 和坐标点 k 形成的容器容积大。 如果 ai > ak,宽度变小,高度也变小(容积取决于较小边),容积变小; 如果 ai < ak,宽度变小,高度不变,容积变小。 所以,可以使用首尾指针,移动首尾指针中高度小的。 int maxArea(vector<int>&原创 2020-12-17 22:42:45 · 148 阅读 · 1 评论 -
leetcode - 234. 回文链表
题目描述 基本思路 1、利用快慢指针,快指针每次走两步,慢指针每次走一步,找到链表中点。 2、把后半部分逆序。 3、比较前后两部分。 奇数长度的链表和偶数长度的链表操作不同点: 查找中点:奇数链表结束时,以fast->next为空结束;偶数链表以fast为空结束。 逆序:代码实现中没有把前半部分链表最后一个元素的next指针设为空。结果是偶数链表前半部分链表比后半部分链表长度多1。 bool isPalindrome(ListNode* head) { if (!head) retur原创 2020-12-17 22:09:58 · 85 阅读 · 0 评论 -
leetcode - 763. 划分字母区间
题目描述 基本思路 双指针滑动窗口。读取第一个字符,记录下标位置为first,找到该字符最后出现的位置,记录下标为last。遍历[first + 1, last - 1]区间内字符,如果字符最后出现位置在last后面,则更新last。遍历结束后,完成一个子区间划分。 vector<int> partitionLabels(string S) { vector<int> vec(26, 0); for (int i = 0; i < S.length(); i+原创 2020-12-17 10:08:11 · 100 阅读 · 0 评论 -
剑指 Offer 22. 链表中倒数第k个节点
题目描述 基本思路 快慢指针。慢指针指向第k个节点时,快指针指向最后一个节点,快指针比慢指针快k-1步。快指针的next为null判断结束。 struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; ListNode* getKthFromEnd(ListNode* head, int k) { ListNode *fast = head; for (int i =原创 2020-12-16 21:29:37 · 99 阅读 · 0 评论 -
leetcode-1054. 距离相等的条形码
题目描述 基本思路 1、从下标0位开始放置数字,直到结尾 2、从剩余数字中选择出现次数最多的数字m和次多的数字n,依次放置到结果列表 3、重复步骤2直到放置完毕 static bool cmp(std::pair<int,int> &p1, std::pair<int,int> &p2) { return p1.second < p2.second; } vector<int> rearrangeBarcodes(vector<int>原创 2020-12-16 20:57:43 · 172 阅读 · 0 评论