算法练习
文章平均质量分 54
wchysx
这个作者很懒,什么都没留下…
展开
-
leetcode 78. 子集
子集问题78. 子集常规方法暂不介绍,介绍一种巧妙的解法:二进制遍历每次构造一个子集,原数组每个元素都有两种情况:选和不选,对应到二进制的 0、1,于是可以一个二进制数对应一个子集,比如:0000 对应空集, 1111 对应全集。代码如下class Solution { public List<List<Integer>> subsets(int[] nums) { int n = nums.length; List<List&原创 2021-05-16 23:37:53 · 81 阅读 · 0 评论 -
1~n中m的出现次数
从下面两道题总结的规律剑指 Offer 43. 1~n整数中1出现的次数面试题 17.06. 2出现的次数根据下面的题解面试题43. 1~n 整数中 1 出现的次数(清晰图解)进一步应用到任意数字 m 的情况class Solution { public int countDigit(int n, int m) { int high = n / 10; int low = 0; int cur = n % 10; int d原创 2020-08-09 17:04:42 · 434 阅读 · 0 评论 -
判定字符是否唯一
面试题 01.01. 判定字符是否唯一方法1:哈希表方法2:位运算ASCII码一共128个,long型数值位长64,用两个long变量,0代表当前字符未出现,1表示出现过class Solution { public boolean isUnique(String astr) { //方法1 // HashSet<Character> set = new HashSet<>(); // for(char c : astr.to原创 2020-07-17 16:44:21 · 145 阅读 · 0 评论 -
面试题52. 两个链表的第一个公共节点
面试题52. 两个链表的第一个公共节点两个指针同时行走,当到链表尾部就跳到另一个链表头部,当两个指针相遇时停止/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */publi原创 2020-06-17 22:53:53 · 69 阅读 · 0 评论 -
739.每日温度-单调栈
739.每日温度暴力法O(n2)O(n^2)O(n2)class Solution { public int[] dailyTemperatures(int[] T) { int L = T.length; int[] res = new int[L]; for(int i=0;i<L;i++){ int tmp = 1; for(int j=i+1;j<L;j++){原创 2020-06-13 13:38:32 · 129 阅读 · 0 评论 -
面试题35. 复杂链表的复制
面试题35. 复杂链表的复制链表深拷贝第一步:copyList在每个原节点后面插入复制节点第二步:randromCopy复制随机连接第三步:reList把原链表和复制的链表分离出来java代码如下/*// Definition for a Node.class Node { int val; Node next; Node random; ...原创 2020-03-22 22:35:38 · 102 阅读 · 0 评论 -
摩尔投票法 169. 多数元素
class Solution { public int majorityElement(int[] nums) { //摩尔投票法 int m = 0; int p = 0; for(int num:nums){ if(p == 0){ m = num; ...原创 2020-03-13 11:37:48 · 68 阅读 · 0 评论 -
二叉树求深度模板
543. 二叉树的直径/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solutio...原创 2020-03-10 15:33:58 · 97 阅读 · 0 评论 -
bug(面试题59 - II. 队列的最大值)(已解决)
做面试题59 - II. 队列的最大值时遇见个bug public int pop_front() { if(q.isEmpty()) return -1; //int val = q.poll(); if(q.peek() == d.peekFirst()){ d.poll(); } ...原创 2020-03-07 21:35:21 · 107 阅读 · 0 评论 -
LeetCode 994. 腐烂的橘子
看别人的写法模仿了一下为橘子引入腐败时间然后就是BFS了class Orange{ int x; int y; int time; public Orange(int x,int y,int time){ this.x = x; this.y = y; this.time = time; }}clas...原创 2020-03-04 20:11:31 · 78 阅读 · 0 评论 -
LeetCode剑指4,二维数组中查找
右上角或左下角开始寻找优化方向:每次不一定只向下或向左移一位,用二分的思想找到连续同方向移动的终止坐标class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { if(matrix.length==0) return false; int m = ...原创 2020-02-24 17:13:41 · 106 阅读 · 0 评论 -
【LeetCode8】40.组合数目II
class Solution { List<List<Integer>> res = new ArrayList<>(); int[] candidates; int len; public List<List<Integer>> combinationSum2(int[] candidates,...原创 2020-02-22 12:53:41 · 81 阅读 · 0 评论 -
【LeetCode刷题记录7】39.组合数目(回溯算法)
39.组合数目注意:*题中有可以重复使用数组元素的条件*(没好好看条件,程序过了,自己一直想不明白为啥过了,后来发现误打误撞满足了题中的条件)每次更新路径都要在复制的原路径上加元素,不能直接用旧路径,子分支多于一个,假如第一个分支在原路径上更新,后面的分支也要更新,可原路径已经没了每次都要产生一堆List记录路径,可以加入及时删除List的语句,降低空间复杂度class Solut...原创 2020-02-22 00:45:38 · 91 阅读 · 0 评论 -
java二分搜索模板
class Solution { public int search(int[] nums, int target) { int left = 0; int right = nums.length-1; while(left<=right){ int mid = left+((right-left)>>...原创 2020-02-19 16:27:21 · 128 阅读 · 0 评论 -
【LeetCode6】剑指offer.面试题03. 数组中重复的数字
布尔数组class Solution { public int findRepeatNumber(int[] nums) { int len = nums.length; boolean[] vis = new boolean[len]; for(int i:nums){ if(vis[i]==true) retu...原创 2020-02-19 12:32:22 · 174 阅读 · 0 评论 -
【LeetCode刷题记录4】24. 两两交换链表中的节点
个人LeetCode刷题记录:24. 两两交换链表中的节点题目地址递推法/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Sol...原创 2020-02-03 15:53:45 · 97 阅读 · 0 评论 -
【LeetCode刷题记录3】23. 合并K个排序链表
法一:暴力法(差一个测试无法通过)/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public Li...原创 2020-02-03 15:43:39 · 102 阅读 · 0 评论 -
【LeetCode刷题记录2】8. 字符串转换整数 (atoi)
个人LeetCode刷题记录:8. 字符串转换整数 (atoi)题目地址java求解代码class Solution { public int myAtoi(String str) { char[] charList = str.toCharArray(); //String转字符数组 int flag = 1; //正负号标记 ...原创 2020-02-01 18:43:13 · 106 阅读 · 0 评论 -
【LeetCode刷题记录1】7. 整数反转
个人LeetCode刷题记录:7. 整数反转题目地址java求解代码class Solution{ public int reverse(int x) { int res = 0; //记录最后返回的结果值 int t ; //用来临时记录 while(x != 0) //因为x可取正负,不适合用x>0,或x<0,每次...原创 2020-02-01 18:42:19 · 88 阅读 · 0 评论