自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

泽阳Alex的博客

学习永不止步

  • 博客(95)
  • 资源 (3)
  • 收藏
  • 关注

原创 【算法】街道种树

[Description]某条街道两边分别种植了一排数木,并按如下编号:1 3 5 7 9 ... 45 47 49 ... 992 4 6 8 10 ... 46 48 50 ... 100但是有一些数木被砍去,希望你能找出一边最长的连续的大树。[Input] 输入砍掉的树编号9 15 27 35 6[Output] 输出最大长度的起始位置和最大长度8 47[代码实现]时间复杂度O(n),额外空间复杂度O(1) /** * 时间复杂度O(Max

2020-07-11 15:00:49 1125 2

原创 专题5:不同种遍历结合恢复二叉树

不同种遍历结合恢复二叉树1.先序与中序结合恢复二叉树(LeetCode105)前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7代码思想:前序遍历和中序遍历有以下特点:前序遍历: 根节点 | 左子树 | 右子...

2019-11-26 14:07:31 256

原创 专题4:char[ ]、String、StringBulider和StringBuffer

char[ ]、String、StringBulider和StringBuffer1.char[]和String(1)取里面的元素char数组取元素,直接利用数组下标即可; String字符串需要利用 .charAt()指定哪一个元素(2)相互转换:char[] str = {'a','b','c'};String s = str.toString();但这里转换后的s...

2019-11-26 11:01:43 229

原创 专题3:字符串 / 数组排列

字符串/数组排列1.把数组排成最小的数(剑指Offer 45)输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。代码思想:排列的思想都是取一个比较一次,最好用的工具就是系统自带的比较器,只需重写compare方法即可。代码实现:public Str...

2019-11-26 11:01:33 177

原创 专题2:二叉树的先序、中序、后序、层次、宽度、深度遍历

二叉树的先序、中序、后序、层次、宽度、深度遍历1.二叉树的先序、中序、后序递归遍历(1)先序递归遍历(LeetCode144)public static void preOrderRecur(Node head) { if (head == null) { return; } System.out.print(head.value + " "); preOrde...

2019-11-26 11:01:18 181

原创 专题1:二叉搜索树的验证、插入、删除和搜索

二叉搜索树的验证、插入、删除和搜索1.二叉搜索树的验证(LeetCode98)二叉搜索树是指在二叉树的中序遍历中节点值升序。依照此特点,我们可以采用非递归中序遍历,在输出节点值的地方替换为当卡节点值是否比上一个节点值大,如果满足,则是二叉搜索树。代码实现: public boolean isValidBST(TreeNode root) { if (root ==...

2019-11-26 11:00:59 112

原创 【208】实现Trie(前缀树)

题目(难度:中等):实现一个 Trie (前缀树),包含insert,search, 和startsWith这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 falsetrie.star...

2019-11-25 08:23:14 123

原创 【386】字典序排序

题目(难度:中等):给定一个整数n, 返回从1到n的字典顺序。例如,给定 n =1 3,返回 [1,10,11,12,13,2,3,4,5,6,7,8,9] 。请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据n小于等于5,000,000。代码思想:字典序的思想是从数字的第一个字符比较,如果可以直接比较出前后,则输出结果;如果第一个字符相同,则比较第二...

2019-11-25 08:23:05 322

原创 【1252】奇数值的单元格的数目

题目(难度:简单):代码思想:单纯的暴力解决,需要注意的是区分indices的对行还是对列操作,这里是对行队列交替执行加1操作,用一个boolean类型的flag区分一下。代码实现:public int oddCells(int n, int m, int[][] indices) { int[][] array = new int[n][m]; ...

2019-11-25 08:22:57 184

原创 【200】岛屿数量

题目(难度:中等):给定一个由'1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。示例 1:输入:11110110101100000000输出:1示例2:输入:11000110000010000011输出: 3代码思想:利用病毒...

2019-11-25 08:22:49 104

原创 【1253】重构2行矩阵

题目(难度:中等):给你一个2行 n 列的二进制数组:矩阵是一个二进制矩阵,这意味着矩阵中的每个元素不是0就是1。第 0 行的元素之和为upper。第 1 行的元素之和为 lower。第 i 列(从 0 开始编号)的元素之和为colsum[i],colsum是一个长度为n的整数数组。你需要利用upper,lower和colsum来重构这个矩阵,并以二维整...

2019-11-25 08:22:39 170

原创 【1155】掷骰子的n种方法

题目(难度:中等):这里有d个一样的骰子,每个骰子上都有f个面,分别标号为1, 2, ..., f。我们约定:掷骰子的得到总点数为各骰子面朝上的数字的总和。如果需要掷出的总点数为target,请你计算出有多少种不同的组合情况(所有的组合情况总共有 f^d 种),模10^9 + 7后返回。示例 1:输入:d = 1, f = 6, target = 3输出...

2019-11-25 08:22:33 1164

原创 【239】滑动窗口最大值

题目(难度:困难):给定一个数组 nums,有一个大小为k的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k个数字。滑动窗口每次只向右移动一位。返回滑动窗口中的最大值。input:[2,3,4,2,6,2,5,1]output:[4,4,6,6,6,5]代码思想:由于窗口不断更新,不能一直以一个最大值作为比较器,来确定最大值。这里通过数组下标来...

2019-11-25 08:22:21 102

原创 【796】旋转字符串

题目(难度:简单):给定两个字符串, A和B。A的旋转操作就是将A 最左边的字符移动到最右边。例如, 若A = 'abcde',在移动一次之后结果就是'bcdea'。如果在若干次旋转操作之后,A能变成B,那么返回True。示例 1:输入: A = 'abcde', B = 'cdeab'输出: true示例 2:输入: A = 'abcde', B = 'ab...

2019-11-25 08:22:01 139

原创 【653】两数之和IV——输入BST

题目(难度:简单):给定一个二叉搜索树和一个目标结果,如果 BST 中存在两个元素且它们的和等于给定的目标结果,则返回 true。案例 1:输入: 5 / \ 3 6/ \ \2 4 7Target = 9输出: True代码思想:利用二叉搜索树的特点,即中序遍历节点值升序的特点,将中序遍历的结果存储在list中(这里因为不知道...

2019-11-25 08:21:50 115

原创 【387】字符串中的第一个字符

题目(难度:简单):给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。案例:s = "leetcode"返回 0.s = "loveleetcode",返回 2.代码思想:利用map结构,记录每个字符出现的次数,最后遍历map集合,取出现次数为1的元素代码实现: public int firstUniqChar(String...

2019-11-25 08:21:20 273

原创 【104】二叉树的最大深度

题目(难度:简单):给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。代码思想:利用递归,取当前节点左右子树的最大深度+1,...

2019-11-24 11:05:05 69

原创 【114】将二叉树展开为链表

题目(难度:中等):给定一个二叉树,原地将它展开为链表。例如,给定二叉树 1 / \ 2 5/ \ \3 4 6将其展开为:1\ 2 \ 3 \ 4 \ 5 \ 6代码思想:核心问题是不允许创建新的链表存储树节点,而是在二叉...

2019-11-24 10:58:03 76

原创 【958】完全二叉树

题目(难度:中等):若设二叉树的深度为 h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。(注:第 h 层可能包含 1~2h个节点。)示例 1:输入:[1,2,3,4,5,6]输出:true代码思想:任何一个节点有右孩子没有左孩子,则返回false 如果左右孩子不全,即有左孩子无右孩子或者...

2019-11-24 10:48:16 115

原创 【110】平衡二叉树

题目(难度:中等):给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。代码思想:利用递归,递归结束条件:叶子节点...

2019-11-24 10:42:24 85

原创 【783】二叉搜索树节点最小距离

题目(难度:简单):给定一个二叉搜索树的根结点root, 返回树中任意两节点的差的最小值。示例:输入: root = [4,2,6,1,3,null,null]输出: 1解释:注意,root是树结点对象(TreeNode object),而不是数组。给定的树 [4,2,6,1,3,null,null] 可表示为下图: 4 / \...

2019-11-24 10:35:34 205

原创 【701】二叉搜索树的插入操作

题目(难度:中等):给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 保证原始二叉搜索树中不存在新值。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。给定二叉搜索树: 4 / \ 2 7 / \ 1 3和 插...

2019-11-24 10:29:08 255

原创 【538】把二叉搜索树转换为累加树

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

2019-11-24 10:09:27 81

原创 【700】二叉搜索树中的搜索

题目(难度:简单):给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。给定二叉搜索树: 4 / \ 2 7 / \ 1 3和值: 2你应该返回如下子树: 2 / \ 1...

2019-11-24 10:05:33 107

原创 【98】验证二叉搜索树

题目98(难度:中等):给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \ 1 4 / \...

2019-11-24 10:00:32 72

原创 【64】最小路径和

题目(难度:中等):给定一个包含非负整数的mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。代码思想:利用动态规划,二维数组中每个元素存储的是走到当前节点的总...

2019-11-24 09:54:50 89

原创 【560】和为k的子数组

题目(难度:中等):给定一个整数数组和一个整数k,你需要找到该数组中和为k的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。代码思想:代码实现: public int subarraySum(int[] nums, int k) { int len =...

2019-11-09 17:11:39 85

原创 【581】最短连续子数组

题目(难度:简单):给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。示例 1:输入: [2, 6, 4, 8, 10, 9, 15]输出: 5解释: 你只需要对 [6, 4, 8, 10, 9] 进行升序排序,那么整个表都会变为升序排序。代码思想:试想,数组中存在零...

2019-11-09 17:08:16 307

原创 【572】另一个树的子树

题目(难度:简单):给定两个非空二叉树 s 和 t,检验s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。代码思想:分两步,第一步,先在父树中找到子树的根节点,再分别比较父树和子树的左孩子和右孩子,递归的终止条件是:如果父树节点和子树节点均为空,则是子树 如果两者其一为空,另一不为空,则...

2019-11-09 17:00:34 101

原创 【10】正则表达式匹配

题目(难度:困难):给你一个字符串s和一个字符规律p,请你来实现一个支持 '.'和'*'的正则表达式匹配。'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖整个字符串s的,而不是部分字符串。说明:s可能为空,且只包含从a-z的小写字母。p可能为空,且只包含从a-z的小写字母,以及字符.和*。示例 1:输入...

2019-11-09 16:23:14 162

原创 【153】寻找旋转排序数组中的最小数字

题目(难度:中等):假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组[0,1,2,4,5,6,7] 可能变为[4,5,6,7,0,1,2])。请找出其中最小的元素。你可以假设数组中不存在重复元素。示例 1:输入: [3,4,5,1,2]输出: 1代码思想:除去临界值情况,正常有以下两种情况:数组没有发生旋转 数组发生了旋转根据题目...

2019-11-09 15:26:40 77

原创 【509】斐波那契数

题目(难度:简单):斐波那契数,通常用F(n) 表示,形成的序列称为斐波那契数列。该数列由0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1)= 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.给定N,计算F(N)示例;输入:3输出:2解释:F(3) = F(2) + F(1) = 1 ...

2019-11-09 14:38:09 273

原创 【946】验证栈序列

题目(难度:中等):给定pushed和popped两个序列,每个序列中的 值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), ...

2019-11-09 14:22:33 1709 1

原创 【225】【232】栈和队列相互实现

题目【225】(难度:简单):用队列实现栈解题思想:队列的特点是先进先出,用两个队列相互数据转移,实现栈的先进后出。以pop为例,队列1先进栈,如果要实现出栈,则将队列1中的元素除了最后一个元素转移到队列2中,再将队列1中元素移除,实现出栈,下一步继续入栈,再从队列2转移到队列1.代码实现: Queue<Integer> queue1; Queue<Inte...

2019-11-09 14:11:48 99

原创 【102】【107】二叉树的层次遍历、二叉树的层次遍历II(已优化)

题目【102】(难度:中等):给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树:[3,9,20,null,null,15,7],代码思想:利用队列FIFO的思想,将二叉树的节点放入队列中。初始化队列只包含一个根节点root和层次编号level=0;当队列非空时:在输出结果levels中插入一个空列表,开始当前层的算...

2019-10-21 20:14:32 132

原创 【209】长度最小的子数组(已优化)

题目(难度:中等):给定一个含有n个正整数的数组和一个正整数s ,找出该数组中满足其和≥ s的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组[4,3]是该条件下的长度最小的连续子数组。解题:利用滑动窗口,设置左边界变量l,计算 l 到 i下标之间的...

2019-10-21 19:39:31 119

原创 【125】验证回文串

【125】题目(难度:简单):给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: false代码思想:(不适用系统自带方法)核心是排除非字母和...

2019-10-13 14:06:53 144

原创 【141】【142】环形链表(已优化)

【141】题目(难度:简单):给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1...

2019-10-13 11:26:18 124

原创 【121】【122】【123】买卖股票的最佳时机(已优化)

【121】题目(难度:简单):给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利...

2019-10-12 20:35:53 90

原创 【118、119】杨辉三角、杨辉三角II(已优化)

题目(118)(难度:简单):在杨辉三角中,每个数是它左上方和右上方的数的和。示例:输入: 5输出:[ [1], [1,1], [1,2,1], [1,3,3,1],[1,4,6,4,1]]代码思想:规律:每下一行的需要累加的数的序列号与上一行需要累加的序列号相同,只需要再加上上一行相同序列号的前一个即可。利用每一个list的长度,从左...

2019-10-09 14:01:52 110

国科大2018年科学技术与公共政策考试题

该试题是国科大科学技术与公共政策选修课2018年考试题

2018-12-29

国科大移动互联网技术考试2018原题

中国科学院大学移动互联网技术课程2018年秋季学期期末考试原题

2018-12-14

中国科学院大学移动互联网技术复习资料

国科大移动互联网技术课程完整复习资料,供期末考试复习参考

2018-12-14

空空如也

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

TA关注的人

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