自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除