
LeetCode 奇技淫巧
LeetCode 奇技淫巧
abcnull
INTP男,好结交志趣相投的朋友,微信:a463279708,希望能共同努力进步!你们的支持将是我写下去的不竭动力......
展开
-
java容器类常用基本操作
文章目录ArrayList 和 Vector 和 LinkedList 和 HashSet 和 LinkedHashSet// ArrayListArrayList a = new ArrayList();a.add(1);a.get(0);a.size();Stack// StackStack s = new Stack();s.push("1");s.search("1...原创 2020-03-19 15:48:13 · 543 阅读 · 0 评论 -
leetcode奇技淫巧-数组,字符串,集合类等类型相互转换
文章目录数组转字符串数组转集合类字符串转数组字符串转集合类集合类转数组集合类转字符串String 与 StringBuilder 转化String 与 int 转化数组转字符串// 对于整型数组int[] arr = new int[] {1, 2, 3};String str = Arrays.toString(arr);// 对于字符数组char[] arr = new char...原创 2020-04-29 19:29:01 · 594 阅读 · 0 评论 -
leetcode奇技淫巧-数组七种去重技巧
文章目录写在前面使用 Set 集合去重方式一:使用 HashSet 去重方式二:使用 TreeSet 去重方式三:使用 LinkedHashSet 去重使用 List.contains() 方法方式四:使用 ArrayList.contains()两层循环暴力法方式五:两层循环遍历方式六:两层循环遍历改进使用哈希表方式七:哈希表存储额外的方法String 的处理写在前面我们在刷 leetcod...原创 2020-04-29 18:04:01 · 795 阅读 · 0 评论 -
leetcode奇技淫巧-Map依据键或值排序并输出
文章目录写在前头Map 排序 value 输出 keyMap 排序 key 输出 value写在前头逻辑解释我们知道Arrays.sort(数组),也知道Collections.sort(集合类)的方式来进行排序,其中还有一个自定义的比较器的方式来进行的排序,下面通过匿名内部类的形式实现了,下面通过实现比较器接口,重写比较方法来实现比较,比较的方法中有两个参数,o1 表示前面的元素,o2 表...原创 2020-04-29 13:41:29 · 455 阅读 · 0 评论 -
leetcode奇技淫巧-吃透“复杂”的二分查找
文章目录二分查找很简单?三个层面和四种定式模板题目定式一模板结论思考如何记忆定式二模板一结论模板二结论思考如何记忆定式三模板结论思考如何记忆定式四模板结论思考如何记忆总结二分查找很简单?简单?虽然大家都说二分查找很简单,很基础,其实我一直觉得它并不简单,实际上如果是一个新手写二分查找,他会发现其中有非常多的情况要考虑到。那为什么我们把二分查找的题目写多了之后就觉得写二分查找很简单了呢?这是因...原创 2020-04-14 15:07:18 · 583 阅读 · 0 评论 -
leetcode奇技淫巧-位运算代替乘除法
文章目录我们知道 java 位移运算<<和>>可以代替乘除法,我今天在看容器类源码的时候又看到了,想写一写了位移运算的使用:// 相当于 a/2^1,结果是 5int a = 11;System.out.println(a >> 1);// 相当于 a/2^2,结果是 2System.out.println(a >> 2);// ...原创 2020-03-17 23:37:14 · 837 阅读 · 2 评论 -
leetcode奇技淫巧-递归中途强制跳出
文章目录前言关于强制跳出前言我们知道递归程序有很多特别,比如说易读性很好,代码简洁,但是确定也很明显,很多时候递归时间复杂度较高,因此可以考虑转化成备忘录递归算法,或者使用 DP 等其他算法解决,而且递归很容易导致栈溢出,即 Stack OverflowerFlow,因为递归程序实际上就是一个栈的结构,最原始的方法在栈底,递归不断的循环中,最后一个方法在栈顶,但是递归循环次数太多,会导致栈的空...原创 2020-05-01 23:28:02 · 1255 阅读 · 1 评论 -
leetcode奇技淫巧-StringBuilder比String高效?
文章目录StringString 被 final 修饰,不可变,每次拼接字符串都会创建一个新的 String,包括 substring 等方法,频繁的创建对象,并拷贝,所以很慢!StringBuilder可变,线程不安全,线程安全使用 StringBuffer,速度比 StringBuilder 慢,比 String 快。StringBuilder 可变,底层自字符数组,遵循一定的扩容机制...原创 2020-04-29 21:16:44 · 418 阅读 · 0 评论 -
leetcode奇技淫巧-完全平方数查找求解的两种思路
文章目录前言完全平方数的求解前言我们刷 leetcode 知道最快的算法常见就是哈希表,二分,动态规划之类的,哈希表时间复杂度最快可达到 O(1),二分则是 O(logn),动态规划则是 O(n),一道题往往会有多种解法完全平方数的求解题目:给定一个数,看它是谁的平方方式一:使用二分查找这个题我们怎么解决,最直接常规的是,我们直接利用二分查找求解,很标准的二分法,不断的二分,不断的找 ...原创 2020-04-29 11:33:17 · 600 阅读 · 0 评论 -
leetcode奇技淫巧-欧几里德辗转相除法
文章目录前言介绍具体操作前言为什么我要把辗转相除法当做奇技淫巧的一章呢,有几个原因,一个是因为我刷 leetcode 题目时候在这里掉进坑了,因为平时用的少,我当时忘了辗转相除法,另一个是因为我觉得有必要把各种细节方法,各种“招式”在奇技淫巧中做梳理,就好比一个人练功夫,如果这个人平常学到了各种各样的小招式,然后把所有的小招式都融会贯通,根据不同的打斗场景结合在一起,打成华丽的连招效果,那这个...原创 2020-04-24 22:50:04 · 412 阅读 · 0 评论 -
leetcode奇技淫巧-toCharArray遍历和charAt速度比较
文章目录String 两种遍历方式速度快的原因String 两种遍历方式遍历 String 中各个字符两种方式:方法一,先 toCharArray() 转成字符数组,然后利用字符数组遍历方法二,直接使用 String 自带的 charAt(int index) 方法来遍历但是当我们刷 leetcode 时候会发现第一种方法比第二种方法效率要高的,这是为什么呢?在我们注重效率的时候我们...原创 2020-04-10 23:05:02 · 1657 阅读 · 0 评论 -
leetcode奇技淫巧-list转为int数组的几种方法
文章目录循环遍历赋值jdk8新特性流处理我们要是转成 String 数组还是蛮好弄的,直接强转,转成 int 数组就有些麻烦了,因为 int 和 Integer 还是有区别的嘛List<String> list = new ArrayList<>();list.add("a");list.add("b");list.add("c");String[] arr =...原创 2020-04-10 17:17:50 · 1541 阅读 · 1 评论 -
leetcode奇技淫巧-两数交换的几种方式
文章目录方式一:tmp临时变量方式二:求和方式三:异或运算方式一:tmp临时变量优点思路清晰,缺点开辟一个额外空间int a = 1, b = 2, tmp;tmp = a;a = b;b = tmp;方式二:求和先求 a 与 b 的和给 a,然后拿这个和去减 b 的值就是 a 的值再给 b,这时候我们再把和减去新的 b 的值就是 a 的值了,思路繁琐一些,但是不需要开辟额外空间...原创 2020-04-10 16:41:12 · 535 阅读 · 0 评论 -
leetcode奇技淫巧-二分查找防止值溢出
文章目录一般写法,但容易导致值溢出left + right这步操作有可能导致 int 溢出int left = 0, right = n, mid;mid = (left + right) / 2;防止值溢出写法left加上right减去left差值的一半绝对比left + right安全的多int left = 0, right = n, mid;mid = left + (r...原创 2020-04-09 22:22:30 · 1244 阅读 · 0 评论 -
leetcode奇技淫巧-异或运算的妙用
文章目录题型异或运算特点其实我本来打算把这个异或运算弄成一个题型专栏作 leetcode 题型总结的,但是发现这个异或题型确实太少见了,算一个小偏门,但是有时候却出乎意料的好用。既然这么偏,那我就把它弄成 leetcode 奇技淫巧这一栏吧!说道题型,我们先看一道典型的题目:一个数组中几乎所有的数字都是成对的,但是只有一个数字是单个在数组中出现,请找出这个数字,比如[1, 1, 3, 4, ...原创 2020-04-02 22:13:37 · 391 阅读 · 0 评论 -
leetcode奇技淫巧-int最大值与最小值溢出
文章目录前面int 类型界限求边界错误代码求边界正确代码前面这是我在刷 leetcode 时候发现的一个问题,做个小记录int 类型界限Java 中 int 类型是 4 个字节,2 进制 32 位,默认是有符号的,所以只有 31 位是有用的,首位用于决定正数还是负数,但是我们发现 int 的界限值如下:int 最大值: 2147483647int 最小值:-2147483648负...原创 2020-03-29 18:51:12 · 1004 阅读 · 0 评论