- 博客(36)
- 收藏
- 关注
原创 739. 每日温度
方法算法思想:单调栈,递减:从栈底到栈顶时间复杂度:O(n)空间复杂度:O(n)边界条件:补充知识:classSolution{publicint[]dailyTemperatures(int[]T){intlength=T.length; //不是方法int[]ans=newint[length]; ...
2020-08-31 11:30:31 67
原创 394. 字符串解码
方法算法思想:辅助栈,时间复杂度:空间复杂度:边界条件:补充知识:classSolution{publicStringdecodeString(Strings){StringBuilderres=newStringBuilder();intmul=0; //乘数...
2020-08-28 19:17:01 105
原创 42. 接雨水
方法算法思想:栈:类似括号匹配,看图,注意3---7,从下到上一层层,其实不停的出栈,可以看做是在找与 7 匹配的墙,也就是 3 。时间复杂度:空间复杂度:边界条件:补充知识:classSolution{publicinttrap(int[]height){intsum=0;Stack<Integer>stack=newStack<>();intcurrent=0;while(curr...
2020-08-27 18:25:11 70
原创 94. 二叉树的中序遍历
方法算法思想:非递归用栈实现时间复杂度:O(n)空间复杂度:O(n)边界条件:补充知识:/***Definitionforabinarytreenode.*publicclassTreeNode{*intval;*TreeNodeleft;*TreeNoderight;*TreeNode(intx){val=x;}*}*/classSolution{...
2020-08-26 14:59:02 72
原创 lc20. 有效的括号
方法一算法思想:辅助栈,先进后出时间复杂度:空间复杂度:边界条件:补充知识:classSolution{publicbooleanisValid(Strings){Stack<Character>stack=newStack<Character>();for(charc:s.toCharArray()){if(c=='(')stack.push(')');...
2020-08-25 16:21:09 242
原创 剑指 Offer 13. 机器人的运动范围
方法算法思想:深度遍历,递归回溯减枝时间复杂度:O(MN)空间复杂度:O(MN)边界条件:补充知识:classSolution{intm,n,k;boolean[][]visited; //减枝用publicintmovingCount(intm,intn,intk){this.m=m;this.n=n;this.k=k;...
2020-08-24 15:57:08 105
原创 暂时过--------剑指 Offer 51. 数组中的逆序对------------剑指 Offer 20. 表示数值的字符串
剑指 Offer 20. 表示数值的字符串classSolution{publicbooleanisNumber(Strings){Map[]states={newHashMap<>(){{put('',0);put('s',1);put('d',2);put('.',4);}},//0.newHashMap<>(){{put('d',2)...
2020-08-21 16:03:03 63
原创 剑指 Offer 66. 构建乘积数组
方法算法思想:找规律 :上下三角,画图对应时间复杂度:O(N)空间复杂度:O(1)边界条件:补充知识:classSolution{publicint[]constructArr(int[]a){if(a.length==0)returnnewint[0];int[]b=newint[a.length];b[0]=1;inttmp=1;for(inti=1...
2020-08-20 12:23:16 61
原创 剑指 Offer 56 - II. 数组中数字出现的次数 II
方法算法思想:遍历位运算时间复杂度:空间复杂度:边界条件:补充知识:classSolution{publicintsingleNumber(int[]nums){intcount[]=newint[32]; //每一位计数数组for(intnum:nums){for(inti=0;i<32;i++){ ...
2020-08-20 10:22:09 59
原创 剑指 Offer 33. 二叉搜索树的后序遍历序列
方法算法思想:递归判断,左右子树时间复杂度:O(N方)空间复杂度:O(N)边界条件:if(i>=j)returntrue;补充知识:classSolution{publicbooleanverifyPostorder(int[]postorder){returnrec(postorder,0,postorder.length-1);}booleanrec(int[]postorder,i...
2020-08-19 10:17:48 61
原创 剑指 Offer 62. 圆圈中最后剩下的数字
方法算法思想:约瑟夫环,就是这个公式时间复杂度:空间复杂度:边界条件:补充知识:classSolution{publicintlastRemaining(intn,intm){intend=0;for(inti=2;i<=n;i++){end=(end+m)%i;}returnend;}}...
2020-08-19 09:56:41 56
原创 剑指 Offer 57 - II. 和为s的连续正数序列
方法算法思想:滑动窗口, ij和target比较。成功后i再移动时间复杂度:空间复杂度:边界条件:补充知识:classSolution{publicint[][]findContinuousSequence(inttarget){inti=1;//滑动窗口的左边界intj=1;//滑动窗口的右边界intsum=0;//滑动窗口中数字的和List<int[]>res=newArray...
2020-08-18 11:06:56 52
原创 剑指 Offer 56 - I. 数组中数字出现的次数
public int[] singleNumbers(int[] nums) { //xor用来计算nums的异或和 int xor = 0; // 计算异或和 并存到xor // e.g. [2,4,2,3,3,6] 异或和:(2^2)^(3^3)^(4^6)=2=010 for(int num : nums) xor ^= num; //设置mask为1,则二进制为0001 // mas.
2020-08-18 10:23:55 59
原创 面试题38. 字符串的排列
方法算法思想:dfs+交换。。。。。。。。。。。。。。。。。。时间复杂度:O(N!)空间复杂度:O(N2)边界条件:补充知识:classSolution{List<String>res=newLinkedList<>(); //结果char[]c;publicString[]permutation(Strings){c=s.toCharArray(); ...
2020-08-17 11:34:44 75
原创 剑指 Offer 46. 把数字翻译成字符串
方法算法思想:动态规划,到i的时候,区分最后两位:是不是(10,25),最后一位:其他情况时间复杂度:O(N)空间复杂度:O(N)边界条件:两位的时候,有两种情况,所以dp【0】=1补充知识:classSolution{publicinttranslateNum(intnum){Strings=String.valueOf(num); // 转换inta=1,b=1; ...
2020-08-17 10:32:57 100
原创 面试题21. 调整数组顺序使奇数位于偶数前面
方法算法思想:双指针时间复杂度:O(N)空间复杂度:O(1)边界条件:补充知识:class Solution { public int[] exchange(int[] nums) { int i = 0, j = nums.length - 1, tmp; while(i < j) { while(i < j && (nums[i] & 1) == 1) i++; whil...
2020-08-15 19:30:11 65
原创 面试题21. 调整数组顺序使奇数位于偶数前面
方法算法思想:双指针时间复杂度:O(N)空间复杂度:O(1)边界条件:补充知识:classSolution{publicint[]exchange(int[]nums){inti=0,j=nums.length-1,tmp;while(i<j){while(i<j&&(nums[i]&1)==1)i++;while(i<j&a...
2020-08-15 19:28:47 60
原创 剑指 Offer 65. 不用加减乘除做加法
方法算法思想:1,不进位 2进位 3合并 4循环 5直到剩一个时间复杂度:O(1)空间复杂度:O(1)边界条件:补充知识:classSolution{publicintadd(inta,intb){while(b!=0){intc=(a&b)<<1;a^=b;b=c;}returna;}...
2020-08-14 16:13:15 52
原创 剑指 Offer 61. 扑克牌中的顺子
方法算法思想:大小王当成0,不重复情况下,如果最大减最小<5,那么就是正确的时间复杂度:O(N)空间复杂度:O(N)边界条件:补充知识:classSolution{publicbooleanisStraight(int[]nums){Set<Integer>s=newHashSet<>(); //intmax=0,min=14; //注意赋值...
2020-08-14 14:58:12 48
原创 剑指 Offer 60. n个骰子的点数
方法算法思想:动态规划,n个骰子的点数分解为n-1个骰子的点数加上一个骰子的点数。时间复杂度:空间复杂度:边界条件:补充知识:classSolution{publicdouble[]twoSum(intn){doublepre[]={1/6d,1/6d,1/6d,1/6d,1/6d,1/6d}; //最开始的是1/6for(inti=2;i<=n;i++){ ...
2020-08-13 15:37:18 69
原创 剑指 Offer 64. 求1+2+…+n
平均计算、迭代、递归。方法算法思想:递归+逻辑短路时间复杂度:空间复杂度:边界条件:补充知识:classSolution{intres=0;publicintsumNums(intn){booleanx=n>1&&sumNums(n-1)>0;res+=n;returnres;}}...
2020-08-13 14:33:37 71
原创 剑指 Offer 57. 和为s的两个数字
方法算法思想:双指针时间复杂度:O(N)空间复杂度:O(1)边界条件:补充知识:newint[]{nums[i],nums[j]};classSolution{publicint[]twoSum(int[]nums,inttarget){inti=0,j=nums.length-1;while(i<j){ints=nums[i]+nums[j];if(s&g...
2020-08-12 16:04:38 49
原创 剑指 Offer 19. 正则表达式匹配--主站 10 题
方法:动态规划算法思想:倒数匹配时间复杂度:空间复杂度:边界条件:补充知识:classSolution{publicbooleanisMatch(StringA,StringB){intn=A.length();intm=B.length();boolean[][]f=newboolean[n+1][m+1]; //存储boolean类型的...
2020-08-11 10:31:57 82
原创 剑指 Offer 12. 矩阵中的路径--主站 79 题
方法算法思想:dfs +减枝时间复杂度:空间复杂度:边界条件:补充知识:classSolution{publicbooleanexist(char[][]board,Stringword){char[]w=word.toCharArray();for(inti=0;i<board.length;i++){for(intj=0;j<board[0].length;j++){...
2020-08-10 17:26:33 63
原创 剑指 Offer 31. 栈的压入、弹出序列--主站 946 题
方法算法思想:辅助栈,先入栈,和出站数组匹配,成功匹配,则再弹出时间复杂度:O(N)空间复杂度:O(N)边界条件:补充知识:classSolution{publicbooleanvalidateStackSequences(int[]pushed,int[]popped){Stack<Integer>s=newStack<>();inti=0;for(intnum:pus...
2020-08-08 19:41:43 57
原创 剑指 Offer 05. 替换空格
方法算法思想:遍历替换时间复杂度:O(N)空间复杂度:O(N)边界条件:补充知识:classSolution{publicStringreplaceSpace(Strings){StringBuilderres=newStringBuilder();for(Characterc:s.toCharArray()){ //toCharArray()方法if(c==' ')res...
2020-08-07 15:16:01 48
原创 剑指 Offer 63. 股票的最大利润--主站 121 题
方法算法思想:动态规划,前i日最大利润=max(前(i−1)日最大利润,第i日价格−前i日最低价格),cost每日更新最低价格 ,利润profit。时间复杂度:O(N)空间复杂度:O(1)边界条件:补充知识:classSolution{publicintmaxProfit(int[]prices){intcost=Integer.MAX_VALUE,profit=0; //赋值技巧,MAX_VALUEfor(intpr...
2020-08-07 15:05:16 65
原创 剑指 Offer 42. 连续子数组的最大和
方法算法思想:动态规划,当 dp[i - 1] > 0时:执行 dp[i] = dp[i-1] + nums[i]当 dp[i−1]≤0 时:执行 dp[i] = nums[i];时间复杂度:O(N)空间复杂度:O(1)边界条件:补充知识:classSolution{publicintmaxSubArray(int[]nums){intres=nums[0];for(inti=1;i<nums.length...
2020-08-06 15:21:26 55
原创 剑指 Offer 47. 礼物的最大价值
方法算法思想:动态规划。最后的状态,转移方程,边角条件时间复杂度:O(MN)空间复杂度:O(1)边界条件:补充知识:classSolution{publicintmaxValue(int[][]grid){intm=grid.length,n=grid[0].length;for(inti=0;i<m;i++){for(intj=0;j<n;j++){...
2020-08-06 14:18:28 62
原创 剑指 Offer 36. 二叉搜索树与双向链表--主站 426 题
方法算法思想:排序:中序遍历,双向:pre ,cur;循环:head,tail时间复杂度:O(N)空间复杂度:O(N)边界条件:补充知识:/*//DefinitionforaNode.classNode{publicintval;publicNodeleft;publicNoderight;publicNode(){}publicNode(int_val){...
2020-08-05 19:41:37 58
原创 剑指 Offer 25. 合并两个排序的链表--主站 21 题
方法算法思想:双指针,左右来回走时间复杂度:空间复杂度:边界条件:补充知识:/***Definitionforsingly-linkedlist.*publicclassListNode{*intval;*ListNodenext;*ListNode(intx){val=x;}*}*/classSolution{publicListNodemergeTwoLists...
2020-08-04 09:08:51 101
原创 剑指 Offer 11. 旋转数组的最小数字--主站 154 题
方法算法思想:双指针+二分,右边的第一个就是最小的,主要判断middle在左右边,m在左,旋转点在右,m在右,x在[i, m]。正好等于,则j--。时间复杂度:O(log_2 N)空间复杂度:O(1)边界条件:补充知识:classSolution{publicintminArray(int[]numbers){inti=0,j=numbers.length-1; while(i<j){...
2020-08-04 08:46:10 68
原创 剑指 Offer 58 - II. 左旋转字符串
方法算法思想:简单拼接时间复杂度:空间复杂度:边界条件:补充知识:classSolution{publicStringreverseLeftWords(Strings,intn){returns.substring(n,s.length())+s.substring(0,n);}}...
2020-08-03 14:02:51 82
原创 剑指 Offer 58 - I. 翻转单词顺序--主站 151 题
方法算法思想:去除空格,双指针i先走,j再上来,然后保存时间复杂度:O(N)空间复杂度:O(N)边界条件:补充知识:各种length,双判iclassSolution{publicStringreverseWords(Strings){s=s.trim(); intj=s.length()-1,i=j; //字符串的lengh(),数组的lengthStringBuilderres=n...
2020-08-03 13:50:19 66
原创 剑指 Offer 67. 把字符串转换成整数
方法算法思想:按题目要求分情况讨论,res×10 是为了表示每次进位,拼凑数字,每轮数字拼接前,判断resres在此轮拼接后是否超过2147483647时间复杂度:O(N)空间复杂度:O(N)边界条件:最大整数补充知识:classSolution{publicintstrToInt(Stringstr){char[]c=str.trim().toCharArray();//方法调用if(c.length==0)r...
2020-08-02 17:39:45 61
原创 剑指 Offer 49. 丑数--主站 264 题
方法算法思想:动态规划:丑数只包含因子2, 3, 5,因此有 “丑数==某较小丑数×某因子”时间复杂度:空间复杂度:边界条件:补充知识:classSolution{publicintnthUglyNumber(intn){inta=0,b=0,c=0; //初始化int[]dp=newint[n];dp[0]=1;for(inti=...
2020-08-01 18:16:03 86
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人