- 博客(100)
- 收藏
- 关注
原创 谷粒商城归纳总结----------------------chapter2
一.JSR303校验①最开始我们可以在controller中需要校验的字段上加上注解@Valid即可进行最基础的校验。当然为了明确我们哪些字段上可以为空哪些不为空相关指定工作我们在entity上添加上注解,并且当校验出错我们可以返回对应的message信息。②我们也可以在对应需要校验的bean后紧跟BingdingResult就可以获取到校验的结果,并且可以对不同的多场景下的校验做一个分组操作,比方说新增或者修改的情况下才可以校验当前值。③最后做一个复用操作,我们为了统一抛出的信息,制定了一个统一的
2022-03-07 11:55:48
265
原创 CodeTop每日系列三题------------------2021.1.27
LC面试题 17.14. 最小K个数//使用大根堆class Solution { public int[] smallestK(int[] arr, int k) { PriorityQueue<Integer> heap = new PriorityQueue<>((v1,v2) ->v2 - v1); for(int a : arr){ heap.offer(a); if(hea
2022-01-27 14:18:39
598
原创 CodeTop每日系列三题------------------2021.1.25
LC合并两个有序链表//想到了双指针的写法,但是循环条件应该是两个都不为空才可以进入循环,之后再判断哪一个指针为空,那么拼接另外一个链表到后面即可/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ //循环迭代class Solution {
2022-01-25 12:30:29
394
原创 CodeTop每日系列三题------------------2021.1.24
LC516. 最长回文子序列//这道题型比最长回文子串简单一点的就是不用去判断s[i,j]本身是否是回文串然后才可以进行添加操作。所以可以直接采取动态规划,最长回文子串题型需要先判断s[i,j]的子串本身是否回文,并且子串需要连续才可以。class Solution { public int longestPalindromeSubseq(String s) { int n = s.length(); int[][] dp = new int[n][n];
2022-01-24 19:39:21
318
原创 CodeTop每日系列三题------------------2021.1.23
LC剑指 Offer 35. 复杂链表的复制//递归调用函数,并且我们需要用map对节点进行保存操作,查看随机节点是否被创建出来,因为有随机节点所有有可能这个节点还没创建出来就被引用了。如果没有随机那么正常的操作可以进行一个顺序创建节点即可/*// Definition for a Node.class Node { int val; Node next; Node random; public Node(int val) { this.val =
2022-01-23 12:51:16
372
原创 CodeTop每日系列三题------------------2021.1.22
LC剑指 Offer 31. 栈的压入、弹出序列//模拟一个栈的压入和弹出的一个过程,用一个指针指向出栈的下标,如果栈顶元素和出栈序列相同那么久弹栈即可,最后判断栈是否为空class Solution { public boolean validateStackSequences(int[] pushed, int[] popped) { Deque<Integer> stack = new LinkedList(); int i = 0;
2022-01-22 16:22:56
334
原创 CodeTop每日系列三题------------------2021.1.20
LC836. 矩形重叠// 如果两个矩阵面积都为0那么返回false即可。但如果两个面积都大于0,我们就需要判断他们是否有重叠的部分,将rec2固定以后,将rec1的置于rec2的左边上边右边和下边 并且最大值不能超过左右下角的边界值。(数学题)class Solution { public boolean isRectangleOverlap(int[] rec1, int[] rec2) { if(rec1[0] == rec1[2] || rec1[1] == rec1[
2022-01-20 14:20:24
636
原创 CodeTop每日系列三题------------------2021.1.18
LC剑指 Offer 38. 字符串的排列//经典的排列组合题型,有很多细节的地方没有处理好,比方说需要对数组进行排序以及设置标记。同时结束的递归函数的递归出口也出了差错class Solution { private List<String> res; private boolean[] flag;//mark public String[] permutation(String s) { int n = s.length();
2022-01-18 13:39:46
285
原创 CodeTop每日系列三题------------------2021.1.17
LC674. 最长连续递增序列//经典的动态规划题型,以nums[i]结尾的nums子序列数组。class Solution { public int findLengthOfLCIS(int[] nums) { int n = nums.length,res = 1; int[] dp = new int[n]; Arrays.fill(dp,1); for(int i = 1;i < n;i++){
2022-01-17 13:40:53
454
原创 CodeTop每日系列三题------------------2021.1.16
LC28. 实现 strStr()//使用暴力匹配equals是否相同,将字符串分割成needle大小以后进行一个匹配操作。class Solution { public int strStr(String haystack, String needle) { int m = haystack.length(),n = needle.length(); if(needle == null || n == 0) return 0; f
2022-01-16 12:54:52
192
原创 CodeTop每日系列三题------------------2021.1.15
LC231. 2 的幂//考察的是对二进制的二次幂在计算机底层的2进制位数是怎么样的,根据观察规律发现n 和n - 1 求与运算永远是0class Solution { public boolean isPowerOfTwo(int n) { return n > 0 && ((n & (n - 1)) == 0); }}LC977. 有序数组的平方class Solution { public int[] sortedSq
2022-01-15 15:07:08
223
原创 CodeTop每日系列三题------------------2021.1.14
LC260. 只出现一次的数字 III//做了很多道只出现多少次的数字,都采用哈希映射采用空间换时间class Solution { public int[] singleNumber(int[] nums) { Map<Integer, Integer> freq = new HashMap<Integer, Integer>(); for (int num : nums) { freq.put(num, fre
2022-01-14 14:58:36
157
原创 CodeTop每日系列三题------------------2021.1.13
LC628. 三个数的最大乘积//将数组进行排序过后,对情况进行分类讨论即可,均为正,均为负,有正有负。class Solution { public int maximumProduct(int[] nums) { Arrays.sort(nums); int n = nums.length; int res = Math.max(nums[0] * nums[1] * nums[n - 1],nums[n - 1] * nums[n - 2]
2022-01-13 12:11:10
117
原创 CodeTop每日系列三题------------------2021.1.12
LC77. 组合//经典的递归题型,本道题目在计算的过程中在递归函数当中的传值选择错了,如果选择的是index的话那么永远的递归函数都不会是下一个,而是应该使用循环迭代变量当中的i传入其中class Solution { private LinkedList<Integer> item = new LinkedList(); private List<List<Integer>> res = new ArrayList();
2022-01-12 15:05:10
244
原创 CodeTop每日系列三题------------------2021.1.11
LC108. 将有序数组转换为二叉搜索树//因为二叉搜索树中序遍历的结果就是升序数组,本道题型就是升序数组如何转换为树,我们可以用数组中点为根节点,那么数组的左边为左子树,数组的右边为右子树。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} *
2022-01-11 14:05:02
435
原创 CodeTop每日系列三题------------------2021.1.10
LC73. 矩阵置零//采用一个标记数组的方式记录行和列。class Solution { public void setZeroes(int[][] matrix) { int m = matrix.length,n = matrix[0].length; boolean[] raw = new boolean[m]; boolean[] col = new boolean[n]; for(int i = 0;i < m;
2022-01-10 14:01:56
284
原创 CodeTop每日系列三题------------------2021.1.9
LC494. 目标和class Solution { private int count = 0; public int findTargetSumWays(int[] nums, int target) { backtrace(nums,0,0,target); return count; } public void backtrace(int[] nums,int index,int sum,int target){
2022-01-09 14:41:06
542
原创 CodeTop每日系列三题------------------2021.1.8
LC705. 设计哈希集合class MyHashSet { private static final int BASE = 769; private LinkedList[] data; public MyHashSet() { data = new LinkedList[BASE]; for(int i = 0;i < BASE;i++){ data[i] = new LinkedList<Integer
2022-01-08 14:14:12
572
原创 CodeTop每日系列三题------------------2021.1.7
LC96. 不同的二叉搜索树//卡特兰公式class Solution { public int numTrees(int n) { int[] dp = new int[n+1]; dp[0] = 1; dp[1] = 1; for(int i = 2; i < n + 1; i++) for(int j = 1; j < i + 1; j++) dp[i]
2022-01-07 13:25:05
277
原创 CodeTop每日系列三题------------------2021.1.6
LC171. Excel 表列序号//和之前根据数字推算字母的题型差不多,本道题目是根据字母推算数字,其实也就是26进制的推算class Solution { public int titleToNumber(String columnTitle) { int n = columnTitle.length(); int ans = 0; for(int i = 0;i < n;i++){ ans = ans * 26
2022-01-06 12:32:03
405
原创 CodeTop每日系列三题------------------2021.1.5
LC17. 电话号码的字母组合//也是一道经典的回溯题型,主要考察对递归参数以及其他的API的调用class Solution { public List<String> letterCombinations(String digits) { List<String> combinations = new ArrayList(); if(digits.length() == 0) return combinations;
2022-01-05 13:10:43
420
原创 CodeTop每日系列三题------------------2021.1.4
LC611. 有效三角形的个数//采用排序 + 二分搜索最左侧边界值。采取模板是left = right,得到mid的位置并且左右侧更新边界值class Solution { public int triangleNumber(int[] nums) { if(nums.length == 0 || nums == null) return 0; int n = nums.length; Arrays.sort(nums);
2022-01-04 16:13:13
1955
原创 CodeTop每日系列三题------------------2021.1.3
LC111. 二叉树的最小深度/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, Tre
2022-01-03 15:29:58
613
原创 CodeTop每日系列三题------------------2021.12.29
LC剑指 Offer 11. 旋转数组的最小数字//因为存在重复数字那么相当于变种二分搜索,如果相等的情况下该如何处理,将右侧边界转为前一个class Solution { public int minArray(int[] numbers) { int left = 0,right = numbers.length - 1; while(left < right){ int mid = left + (right - left)
2021-12-29 11:53:03
198
1
原创 CodeTop每日系列三题------------------2021.12.28
LC509. 斐波那契数//经典掉牙题目class Solution { public int fib(int n) { int a = 0,b = 1,c = 0; for(int i = 0;i < n;i++){ c = a + b; a = b; b = c; } return a; }}LC268. 丢失的数字//最开始的想法就
2021-12-28 13:26:19
232
原创 CodeTop每日系列三题------------------2021.12.26
LC442. 数组中重复的数据class Solution { public List<Integer> findDuplicates(int[] nums) { //排序后 List<Integer> list = new ArrayList(); if(nums.length == 0 || nums.length == 1) return list; Arrays.sort(nums);
2021-12-26 13:52:14
618
原创 CodeTop每日系列三题------------------2021.12.25
LC100. 相同的树/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNod
2021-12-25 17:01:03
430
原创 CodeTop每日系列三题------------------2021.12.24
LC剑指 Offer 45. 把数组排成最小的数class Solution { public String minNumber(int[] nums) { String[] strs = new String[nums.length]; for(int i = 0; i < nums.length; i++) strs[i] = String.valueOf(nums[i]); Arrays.sort(strs, (
2021-12-24 14:42:23
733
原创 CodeTop每日系列三题------------------2021.12.23
LC剑指 Offer 61. 扑克牌中的顺子//题目的中心思想其实就是查看数组当中最大值减去最小值是否小于5,并且如果有重复元素的话则返回false,大小王为0不纳入其中//set去重的集合 + 循环迭代遍历数组即可class Solution { public boolean isStraight(int[] nums) { Set<Integer> repeat = new HashSet<>(); int max = 0, min
2021-12-23 15:27:18
642
原创 CodeTop每日系列三题------------------2021.12.22
LC55. 跳跃游戏//贪心算法,保存n - 1个元素可以跳跃的最长距离长度,不断循环迭代更新第i个元素当前最长可以到达的距离长度是多少public static boolean canJump(int[] nums) { if (nums == null) { return false; } //前n-1个元素能够跳到的最远距离 int k = 0; for (int i = 0; i <=
2021-12-22 19:34:24
2408
原创 CodeTop每日系列三题------------------2021.12.21
LC139. 单词拆分//动态规划的题型,可以将wordlist转换为set然后定义dp数组,数组含义就是对于i-1之前的子串字符串都是可以拆分为单词的那么就判断剩下的单词是否可以拆分为单词。初始化就是当字符串s为0的时候就是true。为了递推dp[length]。(同时这也是一个背包问题)class Solution { public boolean wordBreak(String s, List<String> wordDict) { HashSet<S
2021-12-21 12:41:39
210
原创 谷粒商城归纳总结----------------------chapter1
在做完尚硅谷的谷粒学院以后,为了增加自己的技术栈继续学习谷粒商城——1.学习docker的过程中对容器的一个理解就是,每一个部署的环境可以立刻通过一个docker容器进行存放对应的镜像映射,并且宿主机以及相对应的镜像之间的关系,大linux包含小linux其实每个镜像内部都是一个小linux,可通过命令docker exec -it mysql /bin/bash 进入到linux内核中进行简单的linux命令操作,在进行实践的过程中发现vim命令不可用也就是说我们不能进入到内核进行对文件的修改,需要.
2021-12-20 19:55:53
454
原创 CodeTop每日系列三题------------------2021.12.20
LC160. 相交链表//写过的题型回忆起来了思路就是定义两个指针进行一个同时遍历操作/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Sol
2021-12-20 10:45:45
455
原创 CodeTop每日系列三题------------------2021.12.19
LC1047. 删除字符串中的所有相邻重复项//遇到重复项不仅可以采取双指针也可以采用栈的数据结构,当然这个栈可以进行一个用变量来控制作为一个模拟栈的数据结构的操作。class Solution { public String removeDuplicates(String s) { StringBuffer stack = new StringBuffer(); int top = -1; for(int i = 0;i < s.leng
2021-12-19 10:15:09
1239
原创 CodeTop每日系列三题------------------2021.12.18
LC40. 组合总和 II//去重是重中之重,其次才是排列组合。used数组是为了不出现[1,1,1]这种类型的组合或者排列,当然如果是为了要去掉数组当中不可以用重复的数字的话,那么对数组进行排序并且如果前后数字相等并且前一个循环!used[i - 1] == 1,也就是说进入了下一个循环那么就要跳过当前循环。class Solution { private LinkedList<Integer> path = new LinkedList(); private
2021-12-18 20:30:36
379
原创 CodeTop每日系列三题------------------2021.12.17
LC74. 搜索二维矩阵//因为m,n的范围比较小那么我们可以考虑用最简单的两次for循环暴力穷举求解,内层循环从最后一个开始因为如果大于最后一个我们可以跳出本次循环class Solution { public boolean searchMatrix(int[][] matrix, int target) { for(int i=0;i<matrix.length;i++){ for(int j=matrix[i].length-1;j>=
2021-12-17 12:46:30
576
原创 CodeTop每日系列三题------------------2021.12.16
LC560. 和为 K 的子数组//首先第一时间想到的就是双循环来进行算取求和并且count计算子数组个数。//迭代遍历public class Solution { public int subarraySum(int[] nums, int k) { int count = 0; for (int start = 0; start < nums.length; ++start) { int sum = 0;
2021-12-16 16:27:07
918
原创 CodeTop每日系列三题------------------2021.12.15
LC75. 颜色分类class Solution { public void sortColors(int[] nums) { int ptr = 0; for(int i = 0;i < nums.length;i++){ if(nums[i] == 0){ int temp = nums[i]; nums[i] =nums[ptr];
2021-12-15 14:56:43
990
原创 CodeTop每日系列三题------------------2021.12.14
LC50. Pow(x, n)//本道题目掉入陷进就是不断重复N次进行一个求解,然而超时了。其实求一个n次幂可以采取一个快速幂模板,也就是说我每次都求底数的平方那么x的64次方只需要求6次即可。class Solution { public double myPow(double x, int n) { //定义结果 double sum = 1; //转换为long是因为如果是Integer.MIN_VALUE转为负数会越界 l
2021-12-14 14:24:57
402
原创 CodeTop每日系列三题------------------2021.12.13
LC剑指 Offer 62. 圆圈中最后剩下的数字//2021秋招cvte笔试题当时没有做出来,是一道很经典的约瑟夫环题目dp。明确dp的含义就是当前状态转移方程要求的是需要删除的下标位置,初始化dp[n]数组那么当数字长度为1的时候仍然是0,所以dp[0] = 0,要求dp[n - 1]。并且题目满足递推关系所以可以采取变量的形式降低空间复杂度class Solution { public int lastRemaining(int n, int m) { //dp[0]表示
2021-12-13 15:33:20
392
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人