leetCode
leetcode
Evelyn_y
这个作者很懒,什么都没留下…
展开
-
leetcode 中级算法 排序和搜索
颜色分类直接sort双指针,标记0和2的位置快排前k个高频元素对每个元素计数,用sortedmap排序有时候如果需要倒序排列,可用负数来计数,这样最大就变成了最小的。数组中的第K个最大元素排序快排,确定第k个元素堆排序寻找峰值暴力,二分都可在排序数组中查找元素的第一个和最后一个位置二分合并区间排序,合并,模拟就完事了搜索旋转排序数组按对角线搜索,缩小搜索区域搜索二维矩阵II分类讨论,按照mid指针可能指向的三种情况分类然后再按照target可能处在的区间分类。一共.原创 2021-07-23 13:42:10 · 135 阅读 · 0 评论 -
leetcode 中级算法 回溯
电话号码的字母组合回溯就完事了括号生成生成所有排列,检查合法性,也可以直接添加()生成合法的串全排列递归排就完事了子集递归排就ok了单词搜索二维数组用clone()是浅复制,在操作过程中数组值会被改变。强行把二维变一维标记数组,快了一些。写回溯这几个题,发现collection作为参数传递的时候值的改变是会影响到上一层的。【不过可以在处理完成后再改回去】二维数组也是,用clone()是浅复制,只能for循环赋值深复制。但是一维数组clone()是深复制...原创 2021-07-07 20:59:12 · 126 阅读 · 0 评论 -
leetcode 中级算法 树和图
二叉树中序遍历DFSmorris:参考线索二叉树,把左子树最右结点指向根节点,然后直接返回根节点的左节点二叉树锯齿层次遍历层次遍历,中间翻转一下即可,可用deque前序+中序构建二叉树关键在于确定左中右三个部分的起始与结束位置。填充每一个结点的下一个右侧结点队列BFS可递归直接left->right不可,但可利用已连接的部分找到下一个结点二叉搜索树中第k小的元素遍历二叉搜索树岛屿数量1)并查集.置l[i]=i,有其他相邻已被标记的岛屿则更新l[i]值..原创 2021-07-07 20:26:37 · 115 阅读 · 0 评论 -
leetcode 中级算法 链表
两数相加大数加法的链表形式。对应位相加,记录进位即可。加速:其中一个链表计算完毕时可将另一个链表剩下的部分直接挂到结果上。奇偶链表非原地:分别取出来。再接上原地:设置两个头指针,每次处理两个结点,让结点指向下一个结点的下一个结点,交替操作。相交链表看两个链表长度,计算长度之差,双指针在离结尾相同位置往后移动,check,因为如果相交,结尾部分一定相同。...原创 2021-07-07 10:46:04 · 56 阅读 · 0 评论 -
leetcode 中级算法 数组与字符串
三数之和排序,num+left+right 计算小了left右移,大了right左移问题是判重,用set会很慢。按num,left,right分别判断,数值变化才做计算矩阵置零标记含零的行和列,题解中的优化只是利用了矩阵的第一行来存储标记字母异位词标记数组中字母出现个数,对比标记数组,但是好像很慢无重复字符的最长子串利用队列,遍历字符串,将字符串入队,记录长度,如果有重复的字符出现,出队重复的部分。最长回文子串1)暴力枚举2)官方题解dp和暴力类似,但是暴力每次对比整个字符串,.原创 2021-06-17 22:07:18 · 65 阅读 · 0 评论 -
leetcode 初级算法 其他
颠倒二进制位给出的是十进制数,位运算手动转换快缺失数字Hashmap很慢把数字排序,看两数之差,如果查值大于一则中间缺少数字。置换【原地把遇到的每一个正数i放到a[i]位置上,遍历如果a[i]!=i那么这个数就缺了...原创 2021-05-20 15:11:19 · 47 阅读 · 0 评论 -
leetcode 初级算法 动态规划
爬楼梯累加递推可直接得到结果由递推公式也可矩阵快速幂计算题解通项公式没细看最大子序和dp还可线段树分治原创 2021-05-20 15:04:06 · 64 阅读 · 0 评论 -
leetcode 初级算法 数学
1.计数质数线性筛和埃氏筛法都可,理论上线性筛应该更快,实际跑出来埃氏筛法更快,可能和数据有关2.3的幂用乘法计算可能会超int范围,最好用除法原创 2021-05-20 14:58:28 · 82 阅读 · 0 评论 -
回文链表,环形链表
回文:翻转比较。问题在于找到中间的点。链表不像线性表那么方便。双指针,slow=slow.next,fast=fast.next。环形:判环:(1)可以用set,但是很慢。(2)快慢指针,中间存在差值。如果有环,fast会给slow套圈。(3)如果有环,翻转链表,头结点不变。(4)删除结点【让p.next=p】逐个删除,删除前判断p.next,如果p.next=p,则有环...原创 2021-05-12 18:07:56 · 47 阅读 · 0 评论 -
字符串类型题目小结
越界字符串匹配类的题不要忘记越界判定数据类型java中数据可用的数据类型太多了,选择合适的数据类型对运行时间的影响比较大。String,StringBuffer等.String因为是final类型的,是不可变类,所以对于append等操作,是要重新newString的,而StringBuffer是可变类,不需要重新new StringBuffer,所以在字符串操作上性能非常好,而且好的不是一点点。(https://www.cnblogs.com/x_wukong/p/3970525.htm.原创 2021-05-12 12:50:36 · 62 阅读 · 0 评论 -
leetcode 125 回文串
串中除了字母还有数字和符号,要求字母和数字回文,其他符号忽略大小写可以匹配注意匹配的时候,区分纯字母和数字字母匹配情况字母大小写相差32,但是数字和字母之间也可以相差32!1.双指针2.可以删除无效字母后翻转和原字符串比较...原创 2021-05-08 14:11:16 · 44 阅读 · 0 评论 -
leetcode 242 有效的字母异位词
1.哈希表数组计数,s+,t-,判断最后表中值是否全为02.Arrays.equalsArray.sort排序,然后对比两个字符串是否相等原创 2021-05-08 13:39:34 · 49 阅读 · 0 评论 -
leetcode 1 两数之和
1.排序排序后双指针小+大,与target比较小了说明小数过小,左++大了说明大数过大,右–但是这里需要返回坐标,最后还要找下标,会慢2.hashmap找target-x更方便。题目中可能出现两个重复值的和为target的情况。这种情况下先找target-x,如果有重复值一定已经先存入了hashmap。找得到则直接输出表中的坐标和当前值坐标。省去找下标,更快...原创 2021-05-06 22:25:19 · 49 阅读 · 0 评论 -
leetcode 283 移动零
1.双指针left:第一个0right:第一个0后面的第一个非0然后交换2.覆盖0没有意义不用管。遍历时把非0值按顺序从数组尾部往前放。遍历结束后reverse数组。原创 2021-05-06 22:00:38 · 38 阅读 · 0 评论 -
leetcode 136 位运算
原创 2021-05-06 13:01:55 · 46 阅读 · 0 评论 -
leetcode每日一题 80 删除有序数组中的重复项 II
很简单,水一水/* * @lc app=leetcode.cn id=80 lang=java * * [80] 删除排序数组中的重复项 II */// @lc code=startclass Solution { public int removeDuplicates(int[] nums) { if (nums.length == 1) return 1; int cloc = 0; // 最后一个不重复数字下标原创 2021-04-06 13:58:09 · 90 阅读 · 0 评论