4 dev_zyx

学生身份

我要认证

北邮计算机硕士在读 talk is cheap, show me code!

等级
TA的排名 5k+

215. 数组中的第K个最大元素

题目:215. 数组中的第K个最大元素题解:1. 题解一:暴力解法2. 题解二:使用最小堆(采用优先队列实现)3. 题解三:基于快速排序的选择方法代码:1. 代码一:暴力解法// 方法1:暴力解法public static int findKthLargest(int[] nums, int k) { int len = nums.length; Arrays.sort(nums); return nums[len - k];}2. 代码二:使用最小堆(

2020-07-08 21:31:45

208. 实现 Trie (前缀树)

题目:208. 实现 Trie (前缀树)题解:1. 定义类 TrieNodeclass TrieNode{ private boolean isEnd; //该结点是否是一个串的结束 TrieNode next[]; //字母映射表 next public TrieNode() { isEnd = false; next = new TrieNode[26]; }}2. 插入

2020-07-07 21:12:53

207. 课程表

题目:207. 课程表题解:广度优先搜索无向图及其邻接表:有向图及其邻接表:1. 解释一:2. 解释二:代码:广度优先搜索import java.util.*;public class code207 { // 边缘列表 prerequisites 【后置结点,前置结点】 public static boolean canFinish(int numCourses, int[][] prerequisites) { int i

2020-07-06 22:16:33

idea生成类注释和方法注释的正确方法

目录目录生成类注释生成类注解模板生成方法注释生成方法注解模板 最近从eclipse转idea了,第一步当然是配置快捷键,模板等。但是!发生了一件贼蛋疼的事情,竟然一直找不到正确添加方法注释的方法! 最后自己摸索到了,在此详细记录,供大家参考。测试版本为idea for mac,可能快捷键不同,但是设置等肯定是相同的1生成类注释打开PreferencesEdit...

2020-07-04 21:37:49

198. 打家劫舍

题目:198. 打家劫舍题解:代码:public class code198 { public static int rob(int[] nums) { if(nums == null || nums.length == 0) { return 0; } int len = nums.length; if(len == 1) { retur

2020-07-03 10:51:49

152. 乘积最大子数组

题目:152. 乘积最大子数组题解:1. 题解一:public int maxProduct(int[] nums) { if (nums.length == 0) { return 0; } if (nums.length == 1) { return nums[0]; } int max_even = 1; boolean flag = false; boolean update = false;

2020-07-02 20:30:37

148. 排序链表

题目:148. 排序链表题解:代码:public class code148 { // 自顶向下 public static ListNode sortList(ListNode head) { // 1、递归结束条件 // 当链表为空或者链表只剩下一个结点时,直接返回 head if(head == null || head.next == null) { return head;

2020-07-01 11:34:47

876. 链表的中间结点

题目:876. 链表的中间结点题解:解释一:解释二:解释三:1. 在两个中间结点的时候,返回第二个中间结点2. 在两个中间结点的时候,返回第一个中间结点代码:public class code876 { public static ListNode middleNode(ListNode head) { if(head == null) { return null; }

2020-06-30 23:54:40

146. LRU缓存机制

题目:146. LRU缓存机制题解:1. 题解一:使用LinkedHashMap实现2. 题解二:使用双向链表结构+HashMap实现0. 解题思路:1. 解释一:2. 解释二:(主要思路)/* 缓存容量为 2 */LRUCache cache = new LRUCache(2);// 你可以把 cache 理解成一个队列// 假设左边是队头,右边是队尾// 最近使用的排在队头,久未使用的排在队尾// 圆括号表示键值对 (key, val)cache.p

2020-06-29 20:45:22

139. 单词拆分

题目:139. 单词拆分题解:解释一:解释二:/* 动态规划算法,dp[i]表示s前i个字符能否拆分 转移方程:dp[j] = dp[i] && check(s[i+1, j]); check(s[i+1, j])就是判断i+1到j这一段字符是否能够拆分 其实,调整遍历顺序,这等价于s[i+1, j]是否是wordDict中的元素 这个举个例子就很容易理解。 假如wordDict=["apple", "pen", "code

2020-06-28 12:42:32

剑指 Offer 68 - II. 二叉树的最近公共祖先

题目:剑指 Offer 68 - II. 二叉树的最近公共祖先题解:代码:该题代码无法进行测试。(LeetCode后台对 “结点相等” 已进行处理)1. 疑难点一:2. 疑难点二:public class 面试题68_2 { public static TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if(root == null) // 当越过叶节点,则直

2020-06-24 14:51:34

剑指 Offer 68 - I. 二叉搜索树的最近公共祖先

题目:剑指 Offer 68 - I. 二叉搜索树的最近公共祖先题解:1. 题解一:迭代2. 题解二:递归代码:1. 代码一:迭代public class 面试题68_1 { // 方法1:迭代 public static TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { while(root != null) // 当节点 root 为空时跳出

2020-06-24 11:38:50

剑指 Offer 66. 构建乘积数组

题目:剑指 Offer 66. 构建乘积数组题解:1. 题解一:左右数组解释一:解释二:2. 题解二:左(或右)数组解释一:解释二:代码:1. 代码一:左右数组public class 面试题66 { // 方法1:左右数组 public static int[] constructArr(int[] a) { if(a == null || a.length == 0) { return

2020-06-23 14:01:50

剑指 Offer 65. 不用加减乘除做加法

题目:剑指 Offer 65. 不用加减乘除做加法题解:代码:1. 代码一:迭代public class 面试题65 { // 方法1:迭代 public static int add(int a, int b) { int sum; // 无进位和 int carry; // 进位值 while(b != 0) // 当进位为 0 时跳出 { sum = a ^ b; // 异或

2020-06-23 11:33:52

剑指 Offer 64. 求1+2+…+n

题目:剑指 Offer 64. 求1+2+…+n题解:解释一:解释二:代码:public class 面试题64 { public int res = 0; public int sumNums(int n) { boolean x = n > 1 && sumNums(n - 1) > 0; res += n; return res; } public

2020-06-23 09:42:44

剑指 Offer 62. 圆圈中最后剩下的数字(约瑟夫环问题)

题目:剑指 Offer 62. 圆圈中最后剩下的数字题解:约瑟夫环问题1. 题解一:模拟链表,O(n²)2. 题解二:数学解法,O(n)代码:1. 代码一:import java.util.*;public class 面试题62 { // 方法1:模拟链表 public static int lastRemaining(int n, int m) { ArrayList<Integer> list = new Array

2020-06-21 13:04:45

剑指 Offer 61. 扑克牌中的顺子

题目:剑指 Offer 61. 扑克牌中的顺子题解:注意:大小王属于癞子牌1. 题解一:不排序方式2. 题解二:排序方式代码:1. 代码一:不排序方式import java.util.*;public class 面试题61 { // 方法1:不排序方式 public static boolean isStraight(int[] nums) { Set<Integer> set = new HashSet<>

2020-06-20 18:12:10

剑指 Offer 60. n个骰子的点数

题目:剑指 Offer 60. n个骰子的点数题解:疑难点:代码:public class 面试题60 { public static double[] twoSum(int n) { // 状态定义,dp[i][j]表示骰子个数为i时点数j可能出现的次数,dp[i][s]表示i个骰子掷出s点的次数 int dp[][] = new int[n + 1][6 * n + 1]; // 初始状态 for(int

2020-06-20 13:33:58

剑指 Offer 59 - I. 滑动窗口的最大值

题目:剑指 Offer 59 - I. 滑动窗口的最大值题解:代码:import java.util.*;public class 面试题59_1 { public static int[] maxSlidingWindow(int[] nums, int k) { if(nums == null || k < 1 || nums.length < k) { int temp[] = new int[0];

2020-06-19 17:29:58

面试题58 - II. 左旋转字符串

题目:面试题58 - II. 左旋转字符串题解:1. 题解一:字符串切片2. 题解二:列表遍历拼接3. 题解三:字符串遍历拼接4. 题解四:三步翻转法(优先)算法思想:1. 第一步:先对前 n 个字符进行翻转;2. 第二步:然后对后面的部分进行翻转;3. 第三步:最后对整体进行翻转。代码:1. 代码一:字符串切片// 方法1:字符串切片public static String reverseLeftWords(String s, int n) { re

2020-06-19 11:09:33

查看更多

勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。