- 博客(63)
- 收藏
- 关注
原创 java.lang.IllegalStateException: Failed to load ApplicationContext 解决办法
仿牛客网敏感词过滤的bug
2022-06-24 13:57:30
929
原创 alibb编程题 (二维数组排序)Java
转载import java.util.Arrays;import java.util.Comparator;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //T表示有T组数据 int T = sc.nextInt();
2022-03-22 21:29:24
757
原创 Arrays.sort(int[][], new Comparator<int[]>() {}二维数组定制排序
如果你想对二维数组[3,4,1,8,5;2,4,5,1,7]排序,可以用如下代码import java.util.Arrays;import java.util.Comparator;import java.util.List;public class erweisort { public static void main(String[] args) { int[][] A={{2,3},{7,4},{1,8},{5,9}}; int m=A.length
2022-03-22 20:08:44
496
原创 剑指 Offer 32 - I、II、III. 从上到下打印二叉树
I 层序遍历,输出为一个数组class Solution { public int[] levelOrder(TreeNode root) { if(root==null) return new int[0]; Queue<TreeNode> queue = new LinkedList<>(); List<Integer> li=new ArrayList<>(); queue.ad
2022-03-18 22:15:48
418
原创 剑指 Offer 14- I. 剪绳子 java 动态规划
姐妹们, 咱就是说有点子难动态规划class Solution { public int cuttingRope(int n) { int[] dp=new int[n+1]; dp[2]=1; for(int i=3;i<=n;i++) { dp[i]=i-1; //切分的那个里面有1,剩下的是i-1,乘积就是1乘以(i-1) for(int j=2;j<i;j++)
2022-03-17 16:49:49
261
原创 剑指 Offer 66. 构建乘积数组
public int[] constructArr(int[] a) { if (a == null || a.length == 0) return a; int len = a.length; int[] left = new int[len]; int[] right = new int[len]; left[0] = right[len - 1] = 1; for (int i = 1; i <
2022-03-17 11:31:28
152
原创 剑指 Offer 15. 二进制中1的个数 Java
因为n&n-1会把低位1抵消掉,所以一直做与运算,直到值为0public class Solution { public int hammingWeight(int n) { int ret = 0; while (n != 0) { n &= n - 1; ret++; } return ret; }}...
2022-03-10 09:13:26
345
原创 剑指 Offer 64. 求1+2+…+n
家人们,我脑子肯定是被驴踢了,我一开始用递归,忘了n-1可能会小于0,如果不加条件的话class Solution { public int sumNums(int n) { boolean flag = n > 0 && (n += sumNums(n - 1)) > 0; return n; }}...
2022-03-04 11:16:22
144
原创 算法:排序算法(插入排序、快排、归并排序)Java
1. 插入排序(Insertion Sort)2. 快排(Quick Sort)3. 归并排序(Merge Sort)先说个题外话,arrays.sort是由Timsort实现的,Timsort是归并排序的优化版一、插入排序从第二个元素(第一个要被排序的新元素)开始,从后向前扫描之前的元素序列如果当前扫描的元素大于新元素,将扫描元素移动到下一位重复2,直到找到一个小于或者等于新元素的位置将新元素插入到该位置对于之后的元素重复步骤1~4,完成升序排序public void insert
2022-03-03 22:22:00
259
原创 剑指 Offer 47. 礼物的最大价值
class Solution { public int maxValue(int[][] grid) { int[][] dp=new int[grid.length][grid[0].length]; dp[0][0]=grid[0][0]; for(int i=0;i<grid.length;i++) { for(int j=0;j<grid.length;j++) { .
2022-03-03 09:19:55
121
原创 剑指 Offer II 004. 只出现一次的数字
class Solution { public int singleNumber(int[] nums) { Arrays.sort(nums); int len=nums.length; int u=nums[len-1]; int i=0; while(i<len-1) { if (nums[i]==nums[i+1])
2022-03-03 09:18:42
87
原创 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
家人们,数组用双指针,谁用谁说好class Solution { public int[] exchange(int[] nums) { int[] temp=new int[nums.length]; int l=0; int u=nums.length-1; for(int i=0;i<nums.length;i++) { if(nums[i]%2==0) temp[u--]=
2022-03-02 20:07:30
71
原创 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面java
家人们,咱们就是说,数组还得是双指针思路双反向指针,左边的++,帮助存储奇数;右边的–,帮助存储偶数class Solution { public int[] exchange(int[] nums) { int[] temp=new int[nums.length]; int l=0; int u=nums.length-1; for(int i=0;i<nums.length;i++) {
2022-03-02 19:34:58
315
原创 剑指 Offer 48. 最长不含重复字符的子字符串Java
家人们,有进步了,第一次carry中等难度的动态规划题目,思路一dp[i]代表以i位置结束的字母的最大不重复字符串dp[0]=1,因为第一个字母的子串就是它自己dp[1]=dp[0]+1; 因为b不在[a]中dp[2]=dp[1]+1;因为c不在[a,b]中dp[3]=3-0=3;因为a在[a,b,c]中,就用两个a的下标之差计算即可。为什么此时哈希表是[a,b,c]呢,因为j=i-dp[i-1]:这个j 是哈希表的起始坐标,j 是当前位置i减去i-1的最大字串间断,此时j是0dp[4]=4.
2022-03-02 16:33:19
271
原创 剑指 Offer 47. 礼物的最大价值
从右下角的元素考虑,到达它有两种可能,要么是左边来的,要么是上面来的。dp[i][j]=max(dp[i-1][j],dp[i][j-1])+grid[i][j]; 而且还要考虑i-1>=0?j-1>=0class Solution { public int maxValue(int[][] grid) { int m =grid.length; int n=grid[0].length; int[][] dp=new int[m][.
2022-03-02 10:12:30
78
原创 剑指 Offer 42. 连续子数组的最大和
DP法和分治法,目前只掌握了DP法,分治法看不懂DPclass Solution { public int maxSubArray(int[] nums) { int[] dp=new int[nums.length]; dp[0]=nums[0]; for(int i=1;i<nums.length;i++) { dp[i]=Math.max(nums[i],dp[i-1]+nums[i]
2022-03-01 11:00:40
78
原创 剑指 Offer 63. 股票的最大利润:双指针同向
救命,仔细一想,双指针同向还是太暴力了class Solution { public int maxProfit(int[] prices) { int first=0; for(int i=0;i<prices.length-1;i++) { int j=i+1; while(j<prices.length) {
2022-02-28 22:09:03
96
原创 算法:时间空间复杂度
如何判断一个算法的好坏?如何对比不同的算法?时间复杂度BigO:T(n)=O(f(n))举例for(int i=0; i<n;i++)x++;O(1+3N)=O(N)原因:i=0是1次,i<n和i++和x++都是N次for(int i=0; i<n;i++){ for(int j=0;j<n;j++) { x++; }}O(n^2)空间复杂度内存空间增长的趋势,常用的有O(1),O(n),O(n^2)O(n^2)比如二维数
2022-02-28 21:37:59
108
原创 算法:二分查找
解决问题:在有序数组中找一个数算法内容:1.从数组的中间元素开始,如果中间元素是x,则查找成功;2.否则我们利用中间位置将数组分为前、后两个子数组:如果x小于中间位置的元素,则进一步查找前一个子数组;否则进一步查找后一个子数组。重复以上步骤,直到找到满足条件的元素,或直到子数组不存在为止,代表查找不成功。...
2022-02-28 21:20:25
64
原创 Java剑指 Offer 10- II. 青蛙跳台阶问题 剑指 Offer 10- I. 斐波那契数列
青蛙跳台阶动态规划问题,最后一步总是有两种方法:①走一步,那么前面有f(n-1)种跳法②走两步,那么前面有f(n-2)种f(n)=f(n-1)+f(n-2)f(0)=1;f(1)=1;class Solution { public int numWays(int n) { if(n<2) return 1; int [] an=new int[n+1]; an[0]=1; an[1]=1;
2022-02-25 21:39:12
293
原创 剑指 Offer 22. 链表中倒数第k个节点 java
思路一求链表长度,然后倒数第k个节点就是正数n-k个class Solution { public ListNode getKthFromEnd(ListNode head, int k) { int n=0; for(ListNode nd=head;nd!=null;nd=nd.next) n++; //求链表长度 ListNode dum=head; if(n-k<0) return null; f
2022-02-18 14:52:59
128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人