1 -=Leessang=-

我要认证

努力怀挺!!!

等级
TA的排名 12w+

LeetCode 337. 打家劫舍 III (二叉树的动态规划)

打家劫舍一(前后相邻不能同时取) public int rob(int[] nums) { if(nums == null || nums.length == 0) return 0; if(nums.length == 1) return nums[0]; if(nums.length == 2) return Math.max(nums[0],nums[1]); int length = nums.length;

2020-10-17 17:44:22

Docker 学习笔记

安装 DockerLinux 系统内核版本需要高于 3.10,并且系统是64位,才可以体验 Docker通过 uname -ir 查看信息获取最新的 docker 安装包wget -qO- https://get.docker.com/ | sh输入密码后就会下载脚本并安装Docker及依赖包安装完成:启动docker 后台服务启动守护进程sudo service docker start输入以下指令能看见版本号,说明 docker 安装成功!docker -v关闭

2020-10-15 16:08:58

CPU密集型 and IO密集型

CPU密集型(CPU-bound)CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。在多重程序系统中,大部份时间用来做计算、逻辑判断等CPU动作的程序称之CPU bound。例如一个计算圆周率至小数点一千位以下的程序,在执行的过程当中绝大部份时间用在三角函数和开根号的计算,便是属于CPU bound

2020-10-12 21:27:58

LeetCode 501. 二叉搜索树中的众数(Morris中序遍历)

Morris 中序遍历用 Morris 中序遍历的方法把中序遍历的空间复杂度优化到 O(1)Morris 中序遍历的一个重要步骤就是寻找当前节点的前驱节点,并且 Morris 中序遍历寻找下一个点始终是通过转移到 \rm rightright 指针指向的位置来完成的。如果当前节点没有左子树,则遍历这个点,然后跳转到当前节点的右子树。如果当前节点有左子树,那么它的前驱节点一定在左子树上,我们可以在左子树上一直向右行走,找到当前点的前驱节点。如果前驱节点没有右子树,就将前驱节点的 rig.

2020-09-25 15:06:09

LeetCode 排列组合子集问题(回溯 + 剪枝)

46. 全排列(中等)class Solution { public List<List<Integer>> permute(int[] nums) { List<List<Integer>> list = new ArrayList<>(); if(nums == null || nums.length == 0){ return list; }

2020-09-13 16:33:22

LeetCode 环形链表Ⅰ、Ⅱ(快慢指针)

环形链表Ⅰ:判断是否有环环形链表Ⅱ:找到第一个入环结点方法:快慢指针思路慢指针走了 n 步,达到入环结点,准备入环;此时快指针已在环内走了 n 步(假设环的长度大于 n);此时快指针距离入环结点还有 b 步远慢指针又走了 b 步;此时快指针走了 2b 步,与慢指针相遇;此时两指针距离入环结点有 n 步远问题一二都可以解决了 //问题一 public boolean hasCycle(ListNode head) { if (head == null || head.ne

2020-09-05 17:05:13

LeetCode 836. 矩形重叠

注:坐标系y轴是向上的自己想到的 public boolean isRectangleOverlap(int[] rec1, int[] rec2) { int x1 = rec1[0], x2 = rec1[2], x3 = rec2[0], x4 = rec2[2]; int y1 = rec1[1], y2 = rec1[3], y3 = rec2[1], y4 = rec2[3]; boolean one = (x2>x3 &&a.

2020-08-26 11:54:07

LeetCode 面试题 01.01. 判定字符是否唯一

实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1:输入: s = “leetcode”输出: false限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。Set public boolean isUnique(String astr) { Set set = new HashSet(); for (int i = 0; i <astr.length() ; i++) {

2020-08-26 11:01:13

LeetCode 496. 下一个更大元素 I (单调栈)

单调栈(官方题解)先忽略数组 nums1,先对将 nums2 中的每一个元素,求出其下一个更大的元素。将这些答案放入哈希映射(HashMap)中,再遍历数组 nums1,并直接找出答案。首先把第一个元素 nums2[1] 放入栈,随后对于第二个元素 nums2[2],如果 nums2[2] > nums2[1],那么我们就找到了 nums2[1] 的下一个更大元素 nums2[2],此时就可以把 nums2[1] 出栈并把 nums2[2] 入栈;如果 nums2[2] <=.

2020-08-24 15:51:46

LeetCode 201. 数字范围按位与

给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7]输出: 4朴素从 m 与 到 n,超出时间限制(m=0,n=21474…)规律可以将问题重新表述为:给定两个整数,我们要找到它们对应的二进制字符串的公共前缀简单的证明:假设对于所有这些二进制串,前 i 位均相同,第 i+1 位开始不同,由于 [m,n] 连续,所以第 i+1 位在 [m,n] 的数字范围从小到

2020-08-23 09:17:53

Java 基础与语法(二)

getDeclaredFields()与getFields()getDeclaredFields(): 获取所有本类自己声明的属性, 不能获取父类和实现的接口中的属性getFields(): 只能获取所有 public 声明的属性, 包括获取父类和实现的接口中的属性下面两段代码的区别是?short s1 = 1; s1 = s1 + 1;short s1 = 1; s1 += 1;第一段编译报错,s1 + 1自动升级为 int 型,int 型赋值给 s1,需要手动强转第二段隐含类型强转,

2020-08-22 22:15:59

LeetCode 258. 各位相加(模 9)

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。输入: 38输出: 2解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。进阶:你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?常规以下解法太尝龟了: public int addDigits(int num) { while(num>=10){ num=num/10+num%10; }

2020-08-20 09:25:41

int 转 String 的方法效率对比

在写 leetcode 的题目时,需要将 int 型的 val 转换为 String 型。自己图方便,直接使用的path += root.val; 。提交后执行用时 11ms,但对比答案后发现答案使用的是path +=String.valueOf(root.val);,把自己的代码仅将path += root.val;改成path +=String.valueOf(root.val);后发现执行用时变为了 2ms !!!击败了 95% 的用户。总结加分析一下,int 类型转 String 类型有以下三种

2020-08-19 10:24:47

LeetCode 189. 旋转数组

暴力旋转 k 次 public void rotate(int[] nums, int k) { int temp, previous; for (int i = 0; i < k; i++) { previous = nums[nums.length - 1]; //每次取出最后一个元素 for (int j = 0; j < nums.length; j++) { tem.

2020-08-18 17:22:23

ArrayList 迭代器 产生 ConcurrentModificationException 异常

之前学习 fail-fast 时了解了 ArrayList 里的一些方法和成员变量:fail-fast(快速失败)机制hasNext 方法补充 ArrayList 的内部类private class Itr implements Iterator<E> 的 hasNext 方法:产生异常在下面一段代码中会报出异常 ConcurrentModificationException原因:集合每次调用 add 方法时,modCount 都会自增(4)在获取迭代器的时候,会把 mod

2020-08-17 17:29:02

LeetCode 1365. 有多少小于当前数字的数字

提示:2 <= nums.length <= 5000 <= nums[i] <= 100暴力法,双循环class Solution { public int[] smallerNumbersThanCurrent(int[] nums) { if(nums != null && nums.length > 0){ int[] ans = new int[nums.length]; //记录答案的数.

2020-08-16 17:27:30

Java 基础与语法(一)

JDK和JREJRE:Java Runtime Environment( java 运行时环境)。即java程序的运行时环境,包含了 java 虚拟机,java基础类库。JDK:Java Development Kit( java 开发工具包)。即java语言编写的程序所需的开发工具包。JDK 包含了 JRE,同时还包括 java 源码的编译器 javac、监控工具 jconsole、分析工具 jvisualvm等。== 和 equals值不同,使用 == 和 equals() 比较都返回 f

2020-08-16 16:11:58

LeetCode 66. 加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。巧解 public int[] plusOne(int[] digits) { for(int i=digits.length-1; i>=0; i--){ digits[i]+

2020-08-13 20:11:52

fail-fast(快速失败)机制

笔记摘自公众号愚公要移山 !!!简介在系统设计中,快速失效系统一种可以立即报告任何可能表明故障的情况的系统。快速失效系统通常设计用于停止正常操作,而不是试图继续可能存在缺陷的过程。这种设计通常会在操作中的多个点检查系统的状态,因此可以及早检测到任何故障。快速失败模块的职责是检测错误,然后让系统的下一个最高级别处理错误。—— 维基百科fail-fast 机制是 Java 集合(Collection) 中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生 fail-fast 事件。演示

2020-08-13 11:20:38

Arrays.asList() 使用指南

笔记总结自公众号 JavaGuide,感谢Guide哥!简介Arrays.asList() 可以将一个数组转化为一个 List 集合 String[] arr = {"aaa","bbb"}; List<String> list = Arrays.asList(arr); //上面两行等价于下面一条语句 List<String> list1 = Arrays.asList("aaa", "bbb");JDK 源码: public st

2020-08-10 17:38:59

查看更多

勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。