day14
颜色分类很简单的一道题,按理来说应该给easy,无奈想不到单指针,进行两次遍历,进行交换元素
1234567891011121314151617181920212223class Solution { public void sortColors(int[] nums) { int n = nums.length; int tag = 0; for(int i = 0; i<n; i++){ if(nums[i]==0){ int temp = nums[i]; nums[i] = nums[tag]; nums[tag] = temp; tag++; } } int tag2 = tag; for(int i = tag; i<n; i++){ ...
ProjectLearning1
优惠券系统开始愉快的项目复盘!
注解
@nullable:表示注入的元素可以为null值,不进行处理,当注入方法时候表示可能方法返回值为null
@RestControllerAdvice:是 Spring 框架中用于统一处理异常和全局响应的注解。
@NoArgsConstructor:注解的作用是生成一个无参构造函数。
@AllArgsConstructor:注解的作用是生成一个包含所有参数的构造函数。
@Slf4j:注解的作用是自动生成一个日志对象。
@target:这个注解用于指定被它修饰的注解可以应用在哪些地方。在这里,被修饰的注解可以应用在类或接口上(ElementType.TYPE),以及方法上(ElementType.METHOD)。
@Retention(RetentionPolicy.RUNTIME): 这个注解用于指定被它修饰的注解的生命周期。在这里,被修饰的注解会在运行时保留,这意味着可以通过反射来读取和使用这个注解。
@Documented: 这个注解用于指定被它修饰的注解会被 javadoc 工具包含在文档中。如果一个注解有 @Documented 注解,那么 ...
day13
三数之和卡了俩月的双指针,微笑
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758class Solution { //定义三个指针,保证遍历数组中的每一个结果 //画图,解答 public List<List<Integer>> threeSum(int[] nums) { //定义一个结果集 List<List<Integer>> res = new ArrayList<>(); //数组的长度 int len = nums.length; //当前数组的长度为空,或者长度小于3时,直接退出 if(nums == null || len <3){ return res; } ...
day12
hahah, the first time to pass the hard difficulty problem.
缺失的第一个正数给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。
请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。
12345678910111213141516class Solution { public int firstMissingPositive(int[] nums) { Set<Integer> set1 = new HashSet<Integer>(); int temp = 0; for(int num: nums){ set1.add(num); } for(int i = 1;i <= nums.length+1; i++){ if(!set1.contains(i)){ ...
day11
时隔一个月的第一次写代码,闹麻了
统计出现过一次的公共字符串1234567891011121314151617181920class Solution { public int countWords(String[] words1, String[] words2) { Map<String,Integer> map1 = new HashMap<>(); //依据hash中的value来判断是否重复 Map<String,Integer> map2 = new HashMap<>(); for(String w : words1){ map1.put(w,map1.getOrDefault(w,0)+1); //如果已经存在,则value+1 } for(String w : words2){ map2.put(w,map2.getOrDefaul ...
day10
java annotation元数据:
描述数据的数据
描述程序的程序
描述类型的类型
元数据作用:
编写文档
编译检查
代码分析
annotation:
内建注解:
@Override用于告知编译器进行覆盖当前的类
@Deprecated用于告知编译器进行不建议使用,因为已经过时了
@SuppressWarnings忽视特定类型的错误1234567891011 @SuppressWarnings(value={"all"}) ``` 4. @FunctionalInterface <p1>用于告知编译器该接口只能有一个抽象方法</p1> </br> <p>以上的注解的主要的作用是为了完成代码的编译检查2. 元annotation: 1. @Retention <p1>表示该注解类型的注解保留的时长</p1> ```java @Retention(RetentionPolicy.SOURCE)
@Target表示 ...
day9
两数之和已知两个数,判断是否在hash中123456789101112class Solution { public int[] twoSum(int[] nums, int target) { Map<Integer,Integer> narr = new HashMap<Integer,Integer>(); // for(int i = 0; i < nums.length; ++i){ if(narr.containsKey(target-nums[i])){ //**containsKey**() 判断hash中是否有key return new int[]{narr.get(target-nums[i]),i}; } narr.put(nums[i],i); } return new int[0]; ...
day8
中序遍历…..写了这么久还是写不对,累qwq1234567891011121314151617class Solution { public List<Integer> inorderTraversal(TreeNode root) { Stack<TreeNode> stack = new Stack<>(); // 修改为 Stack<TreeNode> 类型 一个栈进行操作 List<Integer> result = new LinkedList<>(); //一个linkedlist进行记录 while(root != null || !stack.isEmpty()){ while(root != null){ stack.push(root); root = root.left; } root = s ...
BinaryTree
判断一颗二叉树是否是有效的二叉搜索树
有思路,但是不多…123456789101112131415161718192021222324class Solution { public boolean isValidBST(TreeNode root) { // 调用辅助函数,初始时上界和下界为 null,表示没有限制 return helper(root, null, null); } public boolean helper(TreeNode root, Integer lower, Integer upper) { // 如果当前节点为空,返回 true if (root == null) return true; // 如果当前节点的值不在上下界之间,返回 false if (lower != null && root.val <= lower) return false; if (upper != null && root. ...
day6
default
二叉树的直径
递归递归一想就不会, 二想还不会:)1234567891011121314151617181920212223 class Solution { int ans = 0; public int diameterOfBinaryTree(TreeNode root) { traverse(root); return ans; } private int traverse(TreeNode node) { if (node == null) { return 0; } int leftDepth = traverse(node.left); int rightDepth = traverse(node.right); // Update the diameter if the sum of left and right depths is greater than current ans an ...