![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
敲代码的拉布拉多
这个作者很懒,什么都没留下…
展开
-
三数之和、矩阵置零、字母异位词分组
三数之和方法一 暴力解法三重循环 public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> result = new ArrayList<List<Integer>>(); Arrays.sort(nums); for (int i = 0; i < nums.length; i++) {原创 2020-08-17 09:49:15 · 115 阅读 · 0 评论 -
位1的个数 、汉明距离
位1的个数 public int hammingWeight(int n) { if (n == 0) { return 0; } int i = 1; int count = 0; for (int j = 0; j < 32; j++) { if ((n & i) != 0) { count++; }原创 2020-08-15 11:04:08 · 143 阅读 · 0 评论 -
计算质数 统计所有小于非负整数 n 的质数的数量 最优解法
简单思路循环内部,从0到根号n,如果遇到能整除的数,就不是质数最优解法public int countPrimes(int n) { //初始化创建大小为n的数组, boolean[] isPrim = new boolean[n]; //初始化为true Arrays.fill(isPrim, true); //逆向思维:从小数开始,例如:2--》2*2=4,则4不是质数;2*3=6,则6不是质数······ //.原创 2020-08-15 10:52:30 · 345 阅读 · 0 评论 -
简单动态规划题解总结(leetcode探索 初级算法)
简单动规四道练习题爬楼梯==思路一:简单递归====思路二:hashmap====思路三:动规==买卖股票最佳时机==思路一:暴力法====思路二:保存最小值、最大利润==最大子序和==思路一:暴力法====思路二:改进暴力====思路三:动规==打家劫舍==解法==爬楼梯题目:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼...原创 2020-04-25 11:41:17 · 468 阅读 · 0 评论 -
15. 三数之和
解题思路要三个数,那么只要固定一个数,然后找另外两个数,只要sum=0,就可以记录下来。但是,中间会出现重复的情况排序之后,第i个数和第i+1个数可能会一样,会出现重复,只要判断nums[i]==nums[i-1],就去除判断出来为0时,因为用的是三个数,要判断另外两个数和下一位的重复优化代码:第一个数就大于零或者最后一个数就小于零,直接跳出class Solution {...原创 2020-01-22 10:25:34 · 147 阅读 · 0 评论 -
25、K个一组翻转链表
解题思路首先把一个链表分开,一块k个数其中定义的结点包括 pre(这k个结点之前的结点),next(之后的),start、end把这k结点内部进行反转class Solution { public ListNode reverseKGroup(ListNode head, int k) { ListNode node = new ListNode(0); ...原创 2020-01-04 13:31:39 · 109 阅读 · 0 评论 -
142. 环形链表 II
题目描述:和环形链表相比,就是要返回相遇的那个结点方法:利用双指针:定义快结点和慢结点,快结点一次走两步,慢结点一次一步首先判断是否有环,如果无环直接退出其中,当fast=slow 时,说明有环,这时候要记下他们相遇的那个位置假如,在环路前面节点数为a,环路里面,节点数为b,那么,当快结点和慢结点相遇:快结点走了:S1=2*S2慢结点走了:S1-S2=n*b得...原创 2020-01-03 14:21:32 · 98 阅读 · 0 评论 -
1. 两数之和 --19/11/16
题目:方法一:暴力解法:双循环遍历class Solution { public int[] twoSum(int[] nums, int target) { //暴力法 int[] array = new int[2]; for(int i=0;i<nums.length;i++){ for(int j...原创 2019-11-16 10:43:13 · 126 阅读 · 0 评论 -
239. 滑动窗口最大值 --19/11/13
题目:方法一:利用大顶堆,每次把k个数放进堆里,往右移,就把第一个数移出,后面的数加入,数组里面加入堆顶元素。class Solution { public int[] maxSlidingWindow(int[] nums, int k) { PriorityQueue<Integer> maxHeap = new PriorityQueue<I...原创 2019-11-13 20:10:41 · 141 阅读 · 0 评论 -
242. 有效的字母异位词
题目:方法一:把s和t字符串的字母按顺序排序,组成新的字符串,然后对比class Solution { public boolean isAnagram(String s, String t) { char S[] = s.toCharArray(); char T[] = t.toCharArray(); Arrays.sort(S...原创 2019-11-12 23:06:33 · 96 阅读 · 0 评论 -
703. 数据流中的第K大元素 --19/11/10
题目:思路:既然要找第k个大的元素,那么只需要保留前k个最大的元素即可,只要再加入元素,就往这k个元素里面放,比k个元素的最小值小,就不放,比最小值大,就放进去,最后返回的是k个元素的最小值。这里用到优先队列priorityQueueadd(E e) 将指定的元素插入此优先级队列。clear() 从此优先级队列中移除所有元素。peek() ...原创 2019-11-10 16:20:30 · 150 阅读 · 0 评论 -
232. 用栈实现队列 --19/11/9
题目:方法一:使用两个栈,进行push操作时,判断outstack是否空,如果非空,就把Outstack pop到Instack,然后再往instack里面push元素class MyQueue { Stack<Integer> Instack; Stack<Integer> Outstack; /** Initialize your da...原创 2019-11-09 15:56:56 · 131 阅读 · 0 评论 -
20. 有效的括号 --19/11/8
题目:思路一:栈空1. } )]直接淘汰2. ( [ {入栈栈非空1. 若] } )匹配则peek出栈,不匹配return2. 若[ { ( 入栈循环结束栈空 true非空 falseclass Solution { public boolean isValid(String s) { Stack<Character> sta...原创 2019-11-08 21:08:59 · 155 阅读 · 0 评论 -
141. 环形链表 -- 19/11/8
题目:思路一:遍历链表,当结点出现null时,说明不是循环链表。但是显然,这是错的public class Solution { public boolean hasCycle(ListNode head) { boolean pos=true; while(pos){ head = head.next; ...原创 2019-11-08 19:17:50 · 110 阅读 · 0 评论 -
(递归实现)206.反转链表、24. 两两交换链表中的节点--19\11\8
两两交换链表中的节点递归方法:class Solution { public ListNode swapPairs(ListNode head) { //递归,第一步判断 if(head==null||head.next==null){ return head; }else{ List...原创 2019-11-08 17:29:21 · 143 阅读 · 0 评论 -
206.反转链表、24. 两两交换链表中的节点--19\11\7
题目:class Solution { public ListNode reverseList(ListNode head) { ListNode pre = null; ListNode cur = head; while(cur!=null){ ListNode node = cur.next; ...原创 2019-11-08 00:19:24 · 118 阅读 · 0 评论