![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣刷题
野鸭丁真
这个作者很懒,什么都没留下…
展开
-
力扣dp模板
力扣class Solution { public boolean wordBreak(String s, List<String> wordDict) { boolean[] dp=new boolean[s.length()+1]; dp[0]=true;//初始状态 for(int i=1;i<=s.length();i++){ for(int j=0;j&.原创 2021-11-30 14:35:47 · 165 阅读 · 0 评论 -
异或加前缀和
力扣用sum[]数组记录异或前缀和。又因为一个数与它本身异或为0。一个数与0做异或结果为它自己。所以a==b,即为sum[i]^sum[j]==sum[j]^sum[k+1]。即要使得sum[i]==sum[k+1]。原创 2021-11-17 20:27:44 · 287 阅读 · 0 评论 -
判断两个字符串是否含有公共字母(位运算)
将两个字符串用int表示。先用下面方法,计算该字符串的int表示值 public int method(String str){ int ans=0; for(int i=0;i<str.length();i++){ ans |= 1<<(str.charAt(i)-'a'); //str.charAt(i)-'a'代表出现的字母种类。如a为1,b为10,c为100。 ans与之做或运算,如果出现之原创 2021-11-17 17:36:46 · 726 阅读 · 0 评论 -
力扣319. 灯泡开关
例如有9个灯,求第6个灯最后的亮暗情况。可知只有在第一轮,第二轮,第三轮,第六轮影响。偶数次,所以最后为暗。即相当于求某个数的约数个数的奇偶性,奇为亮,偶为暗。要求总的个数相当于把所有约数个数为奇的数算上。当i为完全平方数1,4,9,16时,约数为奇数,要算上当i不为完全平方数时,约数为偶数,不算。最后相当于求小于等于 n 的完全平方数的个数。力扣...原创 2021-11-15 17:44:41 · 330 阅读 · 0 评论 -
关于二分查找的模板(是否加1取决于l的执行语句)
力扣注意点:当left=1,right=2时如果用(left+right)/2,二分结果还是1.死循环。。要用(left+right+1)/2。class Solution { public boolean isPerfectSquare(int num) { long left=0; long right=num; while(left<right){ long mid=(left+right+1)/2; /原创 2021-11-11 21:05:40 · 534 阅读 · 0 评论 -
142. 环形链表 II
如何判定走的圈数重点,还有fast!=null,,fast.next!=null,,fast.next.next!=null把我整迷糊了public class Solution { public ListNode detectCycle(ListNode head) { ListNode fast=new ListNode(); fast=head; ListNode slow=new ListNode(); sl..原创 2021-09-17 21:47:26 · 54 阅读 · 0 评论 -
141. 环形链表(快慢指针,不能交换判断语句的位置)
while(fast.next != null && fast.next.next != null) 如果交换了位置为while( fast.next.next != null&&fast.next != null)会出错。因为这种写法默认了fast.next不为null,如果恰好fast.next为空则fast.next.next会编译错误报错。public class Solution { public boolean hasCycle(ListNode..原创 2021-09-17 17:09:35 · 76 阅读 · 0 评论 -
双指针法(力扣)
https://github.com/SharingSource/LogicStack-LeetCode/wiki/%E5%8F%8C%E6%8C%87%E9%92%88力扣3,15,16,18,19,611一个从索引2出发遍历数组,一个指针从0开始向右移动,一个指针从i-开始向左移动。class Solution { public int triangleNumber(int[] nums) { int count=0; Arrays.s.原创 2021-09-17 12:03:40 · 71 阅读 · 0 评论 -
448. 找到所有数组中消失的数字(原地哈希)
Math.abs()取绝对值class Solution { public List<Integer> findDisappearedNumbers(int[] nums) { //用来存放结果 List<Integer> res = new ArrayList<>(); //1. 遍历下数组的元素,对对应的索引位置的元素作标记 int len = nums.length; ...原创 2021-09-12 23:09:05 · 89 阅读 · 0 评论 -
678. 有效的括号字符串
复制的他人的代码class Solution { public boolean checkValidString(String s) { int n = s.length(); Deque<Integer> leftStack = new LinkedList<>(); Deque<Integer> starStack = new LinkedList<>(); for ...原创 2021-09-12 21:25:22 · 55 阅读 · 0 评论 -
4. 寻找两个正序数组的中位数(目前只会暴力求解)
class Solution { public static double findMedianSortedArrays(int[] nums1, int[] nums2) { int[] nums; int m = nums1.length; int n = nums2.length; nums = new int[m + n]; if (m == 0) { if (n % 2 ==...原创 2021-09-09 09:25:47 · 68 阅读 · 0 评论 -
2. 两数相加
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; }...原创 2021-09-09 09:11:46 · 39 阅读 · 0 评论 -
1. 两数之和
方式一:暴力递归class Solution { public int[] twoSum(int[] nums, int target) { int [] array=new int[2]; lable:for(int i=0;i<nums.length;i++) { for(int j=i+1;j<nums.length;j++) { if(nums[i]+nums[j]==target) { array[0]=i; ar...原创 2021-09-09 08:47:11 · 43 阅读 · 0 评论