自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 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 94

原创 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 138

原创 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 130

原创 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 152

原创 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 102

原创 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 296

原创 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 832

原创 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 100

原创 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 323

原创 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 98

原创 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 113

原创 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 75

原创 fail-fast(快速失败)机制

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

2020-08-13 11:20:38 1549

原创 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 330

原创 二分查找小结

数据结构课程就有学习到二分法的思想和实现,但自己的动手实践太少,用二分法解题的练习也很少,但直到前段时间真正动手用二分法解题的时候才发现二分法里面的细节很多,边界条件很难把握,用 < 还是<= ,return left 还是 return right分不清。二分查找的一些细节:不要出现 else,而是把所有情况用 else if 写清楚,这样可以清楚地展现所有细节。计算 mid 时需要防止溢出,代码中 使用left + (right - left) / 2来代替 (left + r

2020-08-05 10:22:40 130

原创 LeetCode 461. 汉明距离 (布赖恩·克尼根算法)

两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。内置位计数功能class Solution { public int hammingDistance(int x, int y) { return Integer.bitCount(x ^ y); }}逐个移位class Solution { public int hammingDistance(int x, int y) { in

2020-08-01 14:59:22 275

原创 LeetCode 448. 找到所有数组中消失的数字

给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。找到所有在 [1, n] 范围之间没有出现在数组中的数字。您能在不使用额外空间且时间复杂度为O(n)的情况下完成这个任务吗? 你可以假定返回的数组不算在额外空间内。示例:输入: [4,3,2,7,8,2,3,1]输出: [5,6]暴力(有点shadiao)class Solution { public List<Integer> findDisa

2020-08-01 12:51:25 127

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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