![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
qq_43529421
这个作者很懒,什么都没留下…
展开
-
leetcode位运算
判断一个数是否是2的幂次方我们可以发现2的次方数n和n-1的二进制对应如下: 2 10 01 4 100 011 8 1000 0111 16 10000 01111 。。。。。。。。。。。。。。。即n&(n-1)==0 而要确定n是2的几次方.原创 2020-09-22 13:27:29 · 118 阅读 · 0 评论 -
leetcode刷题之树
树的三种遍历方式 的 非递归版本中序遍历下面的解法就是相当于 第一趟先把元素按照中序的顺序进栈第二趟 是相当于把 null标记过的位置给拿出来class Solution { public List<Integer> inorderTraversal(TreeNode root) { ArrayList<Integer> res = new ArrayList<>(); Linked.原创 2020-09-19 14:15:01 · 74 阅读 · 0 评论 -
leetcode刷题之数组问题
数组下一个升序数组下一个排列实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。以下是一些例子,输入位于左侧列,其相应输出位于右侧列。下面是一个错误的思路的结果…class Solution { public void nextPermutation(int[] nums) { int i = nums.le原创 2020-09-12 12:52:31 · 115 阅读 · 0 评论 -
leetcode 中sql题目总结
文章目录1 组合两个表查询第二的高工资1 组合两个表组合两个表表1: Person±------------±--------+| 列名 | 类型 |±------------±--------+| PersonId | int || FirstName | varchar || LastName | varchar |±------------±--------+PersonId 是上表主键表2: Address±--------原创 2020-09-09 18:27:15 · 272 阅读 · 0 评论 -
leetcode字符串
字符串原创 2020-09-05 11:04:22 · 101 阅读 · 0 评论 -
leetcode二分法
leetcode 二分法原创 2020-09-05 11:03:27 · 115 阅读 · 0 评论 -
leetcode双指针总结
leetcode双指针双指针一般又分为3中应用快慢指针碰撞指针滑动窗口快慢指针判断链表是否有环一快一慢 F和 S 相遇的话就是 成环 没有相遇就是没成环判断链表中环的起点链表中证明了 F指针一定比慢指针多走n圈环的长度F = S+nbF = 2*S可以得到 S = nb这个时候 如果再走链表起点到环起点的a步的话 也就是 环的起点所以我们用F指针重新指向链表的起点 再次相遇的地方就是环的起点碰撞指针一般都是排好序的数组或链表二分查找问题n数之和原创 2020-09-04 21:53:50 · 221 阅读 · 0 评论 -
leetcode深度遍历
深度优先算法深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法,英文缩写为DFS即Depth First Search。过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。深度优先的基本原则:按照某种条件往前试探搜索,如果前进中遭到失败(正如老鼠遇到死胡同)则退回头另选通路继续搜索,直到找到满足条件的目标为止。常用的算法模板//深度优先搜索dfsclass Solution { public void dfs(char[][] source,int原创 2020-09-04 12:07:14 · 220 阅读 · 0 评论 -
leetcode刷题之堆
堆堆堆结构就是 用数组实现的完全二叉树,可以是数组的一部分形成了堆一般是从0开始到某个下标index形成一个大根堆或者小根堆,堆的大小heapSize=index+1如果从0下标开始,每个节点i,他的左子节点为:2i + 1,右子节点为:2i + 2, 他的父节点为 (i-1)/2;排序过程的时间复杂度是O(nlgn)。因为建堆的时间复杂度是O(n)(调用一次);调整堆的时间复杂度是lgn,调用了n-1次,所以堆排序的时间复杂度是O(nlgn)java中默认是小根堆 使用lamada表达式原创 2020-09-02 10:52:48 · 252 阅读 · 0 评论 -
leetcode刷题之广度遍历
leetcode刷题广度遍历原创 2020-08-31 13:51:49 · 97 阅读 · 0 评论 -
leetcode分类练题之回溯
leetcode分类练题 回溯1. 回溯是什么回溯法 采用试错的思想,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其它的可能的分步解答再次尝试寻找问题的答案。回溯法通常用最简单的递归方法来实现,在反复重复上述的步骤后可能出现两种情况:找到一个可能存在的正确的答案;在尝试了所有可能的分步方法后宣告该问题没有答案2. 什么样的题目适合使用回溯排列、组合(子集、幂集、字符全排列)。 在原创 2020-08-31 12:46:35 · 170 阅读 · 0 评论 -
leetcode刷题之链表总结
简单中等困难原创 2020-08-30 16:20:57 · 167 阅读 · 0 评论 -
leetcode刷题分类刷题之动态规划
leetcode刷题分类刷题之动态规划入门篇如何使用动态规划简单中等难度困难入门篇如何使用动态规划首先我们要确认是否能使用动态规划问题的答案依赖于问题的规模 ,也就是说这个问题能否被拆分为一个小规模的问题也就是一个F(N)的问题能否转化为F(i)的问题F(N) 是否与之前的F(i)答案有关系 也就是能否建立状态转移方程状态转移方程也就是我们常说的dp[i] 或者dp[i][j]到底是代表什么dp[i] 和之前的有什么联系能够用dp [0] --dp[i-1]的值推出dp[i]确认原创 2020-08-30 13:02:41 · 404 阅读 · 0 评论