自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

日拱一卒,不期速成!

每天进步一点点

  • 博客(49)
  • 资源 (4)
  • 收藏
  • 关注

原创 【每日一题-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 400

原创 【每日一题-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 349

原创 【每日一题-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 384

原创 【每日一题-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 306

原创 【每日一题-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 325

原创 【每日一题-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 315

原创 【每日一题-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 305

原创 【每日一题-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 581

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

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

2020-07-24 13:57:49 406 1

原创 【每日一题-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 357

原创 【每日一题-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 268

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

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

2020-07-22 15:43:41 349

原创 【每日一题-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 357

原创 【左神算法】栈逆序

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 812

原创 【每日一题-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 313

原创 【每日一题-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 316

原创 【每日一题-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 377

原创 【每日一题-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 415

原创 【每日一题-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 374

原创 【每日一题-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 342

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

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

2020-07-15 10:59:40 320

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

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 316

原创 【每日一题-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 420

原创 【每日一题-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 524

原创 【每日一题-leetcode】703. 数据流中的第K大元素

703. 数据流中的第K大元素数据流中的第K大元素难度简单135设计一个找到数据流中第K大元素的类(class)。注意是排序后的第K大元素,不是第K个不同的元素。你的 KthLargest 类需要一个同时接收整数 k 和整数数组nums 的构造器,它包含数据流中的初始元素。每次调用KthLargest.add,返回当前数据流中第K大的元素。示例:int k = 3;int[] arr = [4,5,8,2];KthLargest kthLargest = new KthLargest

2020-07-14 10:09:40 333

原创 【设计模式】装饰者模式-继承形式

1.表述如果一个女人一开始是比较不好看,但是通过化妆可以提升漂亮度。智商不高通过学习可以提升知识。没有礼貌通过学习变得有礼貌。2.code基础类 womenpublic class Woman { private int beauty; private int iq; private String name; public Woman(int beauty, int iq, String name) { this.beauty = beauty;

2020-07-14 09:28:41 355

原创 【设计模式】装饰者模式-接口形式

1.问题首先,我们要做一个枪击的游戏,由于枪有多种不同功能。所以,我们需要创建多个不同特点的枪去装饰。这样我们的子类就会比较臃肿。所以采用装饰者可以很好的解决这个问题。2.code定义一个接口类型的Gunpublic interface Gun { /*** * 瞄准 */ public void aim(); /** * 射击 */ public void shoot(); /** * 装弹

2020-07-14 09:05:16 458

原创 【每日一题-leetcode】142. 环形链表 II

142. 环形链表 II环形链表 II难度中等533给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是-1,则在该链表中没有环。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。

2020-07-13 08:31:32 330

原创 【每日一题-leetcode】162. 寻找峰值

162. 寻找峰值寻找峰值难度中等243峰值元素是指其值大于左右相邻值的元素。给定一个输入数组 nums,其中 nums[i] ≠ nums[i+1],找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即可。你可以假设 nums[-1] = nums[n] = -∞。示例 1:输入: nums = [1,2,3,1]输出: 2解释: 3 是峰值元素,你的函数应该返回其索引 2。// 首先我们来分析一下,如果采用线性遍历的话,时间复杂度为O(

2020-07-12 11:17:56 402

原创 【每日一题-leetcode】19. 删除链表的倒数第N个节点

19. 删除链表的倒数第N个节点删除链表的倒数第N个节点难度中等885给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.//快慢指针,这块删除不难,主要是要处理好 1->2 删除1这样的问题。//所以需要设定一个前置指针,至于为什么fast 和 slow要指向pre//1>2>3

2020-07-12 10:52:38 307

原创 【白板编程】三个线程顺序打印ABC

建立三个线程A、B、C,A线程打印10次字母A,B线程打印10次字母B,C线程打印10次字母C,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印。考察多线程类的实际应用思路 选择使用ReentrantLock 维护一个公有变量,每次打印的时候使用一个Lock锁住,打印完成之后解锁。package com.ncst.collections;import java.util.concurrent.locks.Lock;import java.util.concurr.

2020-07-11 16:41:17 707

原创 【白板编程】实现一个生产者消费者模型-wait-notify实现

package com.ncst.collections;import java.util.LinkedList;import java.util.Random;/** * @author i * @create 2020/7/11 15:57 * @Description * 1.为什么要使用while进行判断 * 2.wait/notify为什么要配合syn使用 * 第一点 我们需要明确,那就是执行wait方法会释放锁,所以在syn代码块中,说明当前执行的线程已经获取了锁

2020-07-11 16:25:33 372 1

原创 【每日一题-leetcode】108. 将有序数组转换为二叉搜索树

108. 将有序数组转换为二叉搜索树将有序数组转换为二叉搜索树难度简单510将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5分治思路 有序数

2020-07-11 10:41:37 314

原创 【每日一题-leetcode】3. 无重复字符的最长子串

3. 无重复字符的最长子串无重复字符的最长子串难度中等3949给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。1.滑动窗口问题a.left记录当前窗口的左边界 i为右边界。b.每次存储当前ch value为当前的坐标值c.动态更新left 和 max的值时间复杂度为O(n) 空间复杂度为O(n) //滑动窗口问题。 //定

2020-07-11 09:40:23 277

原创 【每日一题-leetcode】2.两数相加

2.两数相加两数相加难度中等4562给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807时间复杂度为O(M

2020-07-10 09:24:14 301

原创 【每日一题-leetcode】617.合并二叉树

617.合并二叉树合并二叉树难度简单412给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 1 2

2020-07-09 12:39:25 352

原创 【每日一题-leetcode】 581.最短无序连续子数组

581.最短无序连续子数组最短无序连续子数组难度简单335收藏分享切换为英文关注反馈给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15]输出: 5解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。1.双指针核心思想还是双指针,i 和 ja.默认第一个元素为最大值,如果当前

2020-07-08 10:57:01 329

原创 【每日一题-leetcode】543.二叉树的直径

543.二叉树的直径二叉树的直径难度简单397给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。示例 : 给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。1.dfs最长直径。可能有三种情况、1.要么在左子树中 2.要么在右子树中

2020-07-07 09:52:44 350

原创 【每日一题-leetcode】538.把二叉搜索树转换为累加树

538.把二叉搜索树转换为累加树把二叉搜索树转换为累加树难度简单275给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(GreaterTree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 原始二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18 / \ 20

2020-07-06 08:54:08 287

原创 【每日一题-leetcode】461.汉明距离

461.汉明距离汉明距离难度简单293两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。给出两个整数 x 和 y,计算它们之间的汉明距离。注意: 0 ≤ x, y < 231.示例:输入: x = 1, y = 4输出: 2解释:1 (0 0 0 1)4 (0 1 0 0) ↑ ↑上面的箭头指出了对应二进制位不同的位置。x^y 亦或 求 i 1的个数。public int hammingDistance(int

2020-07-05 09:35:42 346

Java校招路线.mmap

Java校招路线.mmap

2020-03-25

SpringCloud.mmap

springcloud周阳思维导图

2020-02-24

微机原理与接口技术ppt

《微机原理》是一门专业基础课程,它的主要内容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言设计以及微型计算机各个组成部分介绍等内容。要求考生对微机原理中的基本概念有较深入的了解,能够系统地掌握微型计算机的结构、8086微处理器和指令系统、汇编语言程序设计方法、微机系统的接口电路设计及编程方法等,并具有综合运用所学知识分析问题和解决问题的能力。

2018-11-01

空空如也

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

TA关注的人

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