![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣总结
文章平均质量分 55
算法
naman35453190
这个作者很懒,什么都没留下…
展开
-
位运算和排序
一、位运算 有趣的位操作 1、利用 | 和空格将英文字符转换为小写 ('a' | ' ') = 'a' ('A' | ' ') = 'a' 2、利用&和下划线将英文字符转换为大写 ('b' & '_') = 'B' ('B' & '_') = 'B' 3、利用 ^ 和空格进行大小写转换 ('d' ^ ' ') = 'D' ('D' ^ ' ') = 'd' 4、判断两个数是否异号 int x = -1, y = 2; bool f = ((x ^ y) < 0);原创 2021-04-05 13:46:16 · 140 阅读 · 0 评论 -
递归&回溯
一、回溯 解决一个回溯问题,实际上就是一个决策树的遍历过程,只需要考虑三个问题。 1、路径:也就是已经做出的选择。 2、选择列表:就是当前可以做的选择。 3、结束条件:也就是到达决策树底层,无法再做选择的条件。 回溯算法框架: result = [] def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: 做选择 backtrack(路径,选择列表) 撤销选择 例题:全排列转载 2021-04-02 15:07:07 · 158 阅读 · 0 评论 -
双指针&滑动窗口
一、双指针 双指针的技巧分为两类,一类是快慢指针,一类是左右指针,前者主要是解决链表中的问题,后者是解决数组(字符串)之间的问题。 1、快慢指针框架 bool hasCycle(ListNode *head) { if(head==NULL) return false; ListNode* fast=head; ListNode* slow=head; while(fast!=NULL&&fast->n转载 2021-03-31 20:46:12 · 201 阅读 · 0 评论