自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

i

重剑无锋,大巧不工

原创 【程序人生】日常好文章整理

看到一些好的文章,想整理一下链接。文章版权归原作者所有。1.左耳朵耗子:技术人如何更好地把控发展趋势? https://www.infoq.cn/article/DpZqcqOfcMpYWsiRCC3L...

2020-03-18 22:03:31 64

原创 【程序人生】程序员发展的7大方向

NO1. 基础理论,每一个技术人必备的基础素养,这是根基。NO2. 源码解析,吸收源码里面的设计思想、编码技巧,还有学习能力的训练。NO3. 架构设计,从基础编码建设和解决问题层面跳出来,到更高视角考虑问题,抽象事务的本质。NO4. 软件工程,也是工程方法论,按照合理的节奏来管控推动项目发展。NO5. 工程实操,实战中各个大节点需要锻造的能力要求。NO6. 技术布道,把技术以易懂的方式解...

2019-08-15 13:48:07 976

原创 【每日一题-leetcode】93. 复原IP地址

93. 复原IP地址复原IP地址难度中等365给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.'分隔。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]1.暴力解//25525511135->255.255.111.35 255.255.11.135 public List<St

2020-08-09 18:38:17 3

原创 【白板编程】手写LRU

1.架构图2.code实现package com.ncst.base;import java.util.Hashtable;/** * @author i * @create 2020/8/8 15:05 * @Description */public class LRUCache { private class Node{ int val; int key; Node pre; Node next;

2020-08-08 19:00:45 9

原创 【每日一题-leetcode】99. 恢复二叉搜索树

99. 恢复二叉搜索树恢复二叉搜索树Difficulty: 困难二叉搜索树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。示例 1:输入: [1,3,null,null,2]1/3\2输出: [3,1,null,null,2]3/1\2示例 2:输入: [3,1,4,null,null,2]3/ \1 4/2输出: [2,1,4,null,null,3]2/ \1 4/3进阶:使用 O(n) 空间

2020-08-08 11:00:56 9

原创 【每日一题-leetcode】415.字符串相加

415.字符串相加字符串相加难度简单247给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 // 双指针 从num后 不断向前加 carry 代表进位。 // 时间复杂度为O(n) public String addStrings(String num1, String num2) { StringBuffer sb = new StringBuffer(""); int i = nu

2020-08-08 10:58:48 6

原创 【每日一题-leetcode】100. 相同的树

100. 相同的树相同的树难度简单424给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1 / \

2020-08-07 10:36:56 8

原创 【每日一题-leetcode】336. 回文对

336. 回文对回文对难度困难123给定一组 互不相同 的单词, 找出所有不同 的索引对(i, j),使得列表中的两个单词, words[i] + words[j],可拼接成回文串。示例 1:输入:["abcd","dcba","lls","s","sssll"]输出:[[0,1],[1,0],[3,2],[2,4]] 解释:可拼接成的回文串为 ["dcbaabcd","abcddcba","slls","llssssll"]示例 2:输入:["bat","tab","cat"]

2020-08-06 16:09:36 17

原创 【每日一题-leetcode】337. 打家劫舍 III

337. 打家劫舍 III打家劫舍 III难度中等487在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入: [3,2,3,null,3,null,1] 3 /

2020-08-05 17:06:11

原创 【剑指offer】43.1~n整数中1出现的次数

43.1~n整数中1出现的次数剑指 Offer 43. 1~n整数中1出现的次数难度中等70输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。示例 1:输入:n = 12输出:5示例 2:输入:n = 13输出:6public int countDigitOne(int n) { int res = 0; for(long m = 1 ; m<=n ;

2020-08-05 16:58:29 23

原创 【每日一题-leetcode】939. 最小面积矩形

939. 最小面积矩形最小面积矩形难度中等43给定在 xy 平面上的一组点,确定由这些点组成的矩形的最小面积,其中矩形的边平行于 x 轴和 y 轴。如果没有任何矩形,就返回 0。示例 1:输入:[[1,1],[1,3],[3,1],[3,3],[2,2]]输出:4示例 2:输入:[[1,1],[1,3],[3,1],[3,3],[4,1],[4,3]]输出:2 public int minAreaRect(int[][] points) { Set&

2020-08-04 14:57:07 16

原创 【剑指offer】67.把字符串转换成整数

67.把字符串转换成整数面试题67. 把字符串转换成整数难度中等9写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符

2020-08-04 13:09:37 20

原创 【每日一题-leetcode】212. 单词搜索 II

212. 单词搜索 II单词搜索 II难度困难207给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。示例:输入: words = ["oath","pea","eat","rain"] and board =[['o','a','a','n'],['e','t','a',

2020-08-04 13:07:50 28

原创 【每日一题-leetcode】79.单词搜索

79.单词搜索单词搜索难度中等502给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[['A','B','C','E'],['S','F','C','S'],['A','D','E','E']]给定 word = "ABCCED", 返回 true给定 word = "SEE", 返回 true给定 wo

2020-08-04 13:04:56 23

原创 【每日一题-leetcode】 204. 计数质数

204. 计数质数计数质数难度简单400统计所有小于非负整数 n 的质数的数量。示例:输入: 10输出: 4解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。// a.去掉偶数 // b.去掉质数*质数// 时间复杂度为O(n/2)*(n/2) O(n^2)public int countPrimes(int n) { int res = 0; boolean [] b = new boolean[n]; if(n>2)

2020-08-02 15:08:37 19

原创 【每日一题-leetcode】300. 最长上升子序列

300. 最长上升子序列难度中等858给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。//时间复杂度为O(N^2) public int lengthOfLIS(int[] nums) { if(nums == null || nums.length == 0){ return

2020-08-01 16:52:01 24

原创 【每日一题-leetcode】287. 寻找重复数

287. 寻找重复数寻找重复数难度中等790给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3快慢指针// 快慢指针 如果数组中有重复的数字,那么必定会形成环// 时间复杂度为O(N)public int findDuplicate(int[] nums

2020-07-31 18:47:22 30

原创 【每日一题-leetcode】28. 实现 strStr()

28. 实现 strStr()实现 strStr()难度简单513实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = "hello", needle = "ll"输出: 2 //双指针加速法 public int strStr(String haystack, Stri

2020-07-29 09:25:36 15

原创 【每日一题-leetcode】395. 至少有K个重复字符的最长子串

395. 至少有K个重复字符的最长子串至少有K个重复字符的最长子串难度中等186找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。示例 1:输入:s = "aaabb", k = 3输出:3最长子串为 "aaa" ,其中 'a' 重复了 3 次。 public int longestSubstring(String s, int k) { int[] map = new int[26

2020-07-29 08:55:27 17

原创 【每日一题-leetcode】14. 最长公共前缀

14. 最长公共前缀最长公共前缀难度简单1185编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: ["flower","flow","flight"]输出: "fl"示例 2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。 // 字符串匹配 // 时间复杂度O(n^2) public String longestCommonPrefix(

2020-07-28 09:43:50 14

原创 【每日一题-leetcode】48.旋转图像

48. 旋转图像旋转图像难度中等504给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix = [ [1,2,3], [4,5,6], [7,8,9]], //时间复杂度为O(N^2) 这道题主要是思路和扣边界 public void rotate(int[][] matrix) {

2020-07-27 19:12:14 21

原创 【每日一题-leetcode】13. 罗马数字转整数

13. 罗马数字转整数罗马数字转整数难度简单971收藏分享切换为英文关注反馈罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000// 分为两种情况, // a.前边的数大于后边的数 做加法 /

2020-07-27 09:34:03 17

原创 【每日一题-leetcode】7. 整数反转

7. 整数反转整数反转难度简单2057给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21 // 本题只需要将数字逆转 很容易做到,但是数字越界问题需要我们考虑好 public int reverse(int x) { int ans = 0; while(x!=0){

2020-07-26 11:31:06 18

原创 【每日一题-leetcode】454. 四数相加 II

454. 四数相加 II四数相加 II难度中等174给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] +C[k] + D[l] = 0。为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 228 -1 之间,最终结果不会超过 231 - 1 。例如:输入:A = [ 1, 2]B = [-2,-1]C = [-1, 2]

2020-07-25 18:25:11 19

原创 【每日一题-leetcode】289. 生命游戏

289. 生命游戏生命游戏难度中等234根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律:如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡;如果活细胞周围八个位置有两个或三个活细胞,则该位置活

2020-07-24 13:57:49 14

原创 【每日一题-leetcode】202. 快乐数

202. 快乐数快乐数难度简单396编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。示例:输入:19输出:true解释:12 + 92 = 8282 + 22 = 6862 + 82 = 10012 + 02 + 02 =

2020-07-23 17:59:59 15

原创 【每日一题-leetcode】237. 删除链表中的节点

237. 删除链表中的节点删除链表中的节点难度简单720请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.//通常我们删除节点都是通过将要删除节点的前一个指针和呆删除

2020-07-23 16:53:39 10

原创 【每日一题-leetcode】8. 字符串转换整数 (atoi)

8. 字符串转换整数 (atoi)字符串转换整数 (atoi)难度中等765收藏分享切换为英文关注反馈请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。接下来的转化规则如下:如果第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字字符组合起来,形成一个有符号整数。假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成一个整数。该字符串在有效的整数部分之后也可能会存在多余

2020-07-22 15:43:41 28

原创 【每日一题-leetcode】128. 最长连续序列

128. 最长连续序列最长连续序列难度困难464给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。 //hashset //1.将元素添加到set中。然后在遍历nums.如果没有直接跳过。(去重) //2.拿到当前元素n 分别去看n-1 和n+1 是否在set中存储过,如果有迭代删

2020-07-21 15:40:13 16

原创 【左神算法】栈逆序

1.问题一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1。将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构。2.codepackage com.ncst.offer.ch1.offer.ch2;/** * @author i * @create 2020/7/20 18:16 * @Description */public class StackReverse { publ

2020-07-20 18:49:38 29

原创 【每日一题-leetcode】39. 组合总和

39. 组合总和组合总和难度中等763给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:[ [7], [2,2,3]] // 剪枝+回溯

2020-07-19 08:51:10 21

原创 【每日一题-leetcode】114. 二叉树展开为链表

114. 二叉树展开为链表二叉树展开为链表难度中等420给定一个二叉树,原地将它展开为一个单链表。例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为:1 \ 2 \ 3 \ 4 \ 5 \ 6// 树的解决方式dfs(先序遍历,中序遍历,后序遍历)// bds(层序遍历)// 而本题只能用dfs 通过交换左右子树的

2020-07-18 09:49:17 17

原创 【每日一题-leetcode】91. 解码方法

91. 解码方法解码方法难度中等440一条包含字母 A-Z 的消息通过以下方式进行了编码:'A' -> 1'B' -> 2...'Z' -> 26给定一个只包含数字的非空字符串,请计算解码方法的总数。示例 1:输入: "12"输出: 2解释: 它可以解码为 "AB"(1 2)或者 "L"(12)。dp public int numDecodings(String s) { int len = s.length();

2020-07-17 16:22:20 15

原创 【每日一题-leetcode】238. 除自身以外数组的乘积

238. 除自身以外数组的乘积除自身以外数组的乘积难度中等532收藏分享切换为英文关注反馈给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在 O(n) 时间复杂度

2020-07-17 09:52:26 26

原创 【每日一题-leetcode】338. 比特位计数

338. 比特位计数比特位计数难度中等349给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]1.位运算// 问题分析 主要是计算出每个位数Num是否为1 并且当前的1的个数 //而本题的思路 显然不是按照这样做。而是把num分隔成多个数字来看当前的位数1的个数。 /

2020-07-16 11:32:22 22

原创 【每日一题-leetcode】44. 通配符匹配

44. 通配符匹配通配符匹配难度困难470给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从 a-z 的小写字母。p 可能为空,且只包含从 a-z 的小写字母,以及字符 ? 和 *。示例 1:输入:s = "aa"p = "a"输出: false解释: "a" 无法匹配 "aa" 整个字符

2020-07-15 16:27:58 21

原创 【设计模式】抽象工厂

1.抽象工厂上一小结 点击链接,我们说了通过简单工厂,创建具体的汽车,但是,如果应对不同的汽车,程序就无法灵活编写。所以。我们需要通过抽象工厂来对每个具体的车型编写一个工厂方法。2.codeAbstractFactoryAbstractFactory 来定义一个创建汽车的抽象方法public interface AbstractFactory { public Car newCar();}BenzFactorypublic class BenzFactory implement

2020-07-15 10:59:40 13

原创 【设计模式】简单工厂

1.简单工厂我们来设想这样一个 场景,现实生活中,家庭都有一辆车,那么这辆车是由谁生产的。显然是汽车工厂。所以,我们就可以通过简单工厂去编写一套代码。2.code接口Car定义接口可以防止耦合度。public interface Car { public void run();}BenzCarBenzCar实现Carpublic class BenzCar implements Car { @Override public void run() {

2020-07-15 10:28:34 16

原创 【每日一题-leetcpde】130. 被围绕的区域

130. 被围绕的区域被围绕的区域难度中等258给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。示例:X X X XX O O XX X O XX O X X运行你的函数后,矩阵变为:X X X XX X X XX X X XX O X X解题思路dfs 1.通过从边界的 O 上下左右查找,如果可以找到说明 查找到的O可以连通到边界的O所以 只需要 O 记录一下 修改成 #

2020-07-14 15:57:22 21

原创 【每日一题-leetcode】124. 二叉树中的最大路径和

124. 二叉树中的最大路径和二叉树中的最大路径和难度困难595给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6private int res = Integer.MIN_VALUE;public int maxPathSum(TreeNode root) { if(r

2020-07-14 10:49:26 37

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