随笔分类 -  OJ

摘要:动态规划的题,我先用最初级的方式写出来 class Solution { public: int rob(vector<int>& nums) { if(nums.size()==0) { return 0; } int n=nums.size(); if(n==1) { return nums[0 阅读全文
posted @ 2020-08-10 23:01 大老虎打老虎 阅读(200) 评论(0) 推荐(0) 编辑
摘要:一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。 有些房间由恶魔守卫 阅读全文
posted @ 2020-07-13 20:25 大老虎打老虎 阅读(170) 评论(0) 推荐(0) 编辑
摘要:这里写了两道题,第二道题依赖第一道题,就先分析第一道题 实现一个 Trie (前缀树),包含 insert, search, 和 startsWith 这三个操作。 示例: Trie trie = new Trie(); trie.insert("apple");trie.search("apple 阅读全文
posted @ 2020-07-12 22:29 大老虎打老虎 阅读(284) 评论(0) 推荐(0) 编辑
摘要:给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。​ 设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): 你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例: 阅读全文
posted @ 2020-07-12 14:29 大老虎打老虎 阅读(165) 评论(0) 推荐(0) 编辑
摘要:哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeritstilldidntboot"。在处理标点符号和大小写之前,你得先把它断成词语 阅读全文
posted @ 2020-07-09 17:09 大老虎打老虎 阅读(134) 评论(0) 推荐(0) 编辑
摘要:合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。 示例: 输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6 解:这道题一种方法是分治,最小粒度是每两个链表合并 将 kk 个链表配对并将同一对中的链表合并;第一轮合并以后 阅读全文
posted @ 2020-07-04 20:37 大老虎打老虎 阅读(165) 评论(0) 推荐(0) 编辑
摘要:给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。 示例: 输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出:3解释:长度最长的公共子数组是 [3, 2, 1] 。 提示: 1 <= len(A), len(B) <= 10000 <= A[i], B[i 阅读全文
posted @ 2020-07-04 20:32 大老虎打老虎 阅读(150) 评论(0) 推荐(0) 编辑
摘要:给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第 k 小的元素。请注意,它是排序后的第 k 小元素,而不是第 k 个不同的元素。 示例: matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15]],k = 8, 返回 13。 解:这个 阅读全文
posted @ 2020-07-04 20:14 大老虎打老虎 阅读(314) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 解:这道题其实是一道中序遍历的题,需要注意的是把当前子树最大的节点返回到上一层。 下面解法中注意的是,第二个参数要加引用。因为我们需要返回上一个结点本身,而不是修改结点中的值 阅读全文
posted @ 2020-06-08 14:59 大老虎打老虎 阅读(124) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解:复制一个节点,并用map跟原节点关联起来 /* s 阅读全文
posted @ 2020-06-05 15:26 大老虎打老虎 阅读(144) 评论(0) 推荐(0) 编辑
摘要:不使用任何库函数,设计一个跳表。 跳表是在 O(log(n)) 时间内完成增加、删除、搜索操作的数据结构。跳表相比于树堆与红黑树,其功能与性能相当,并且跳表的代码长度相较下更短,其设计思想与链表相似。 例如,一个跳表包含 [30, 40, 50, 60, 70, 90],然后增加 80、45 到跳表 阅读全文
posted @ 2020-06-02 22:59 大老虎打老虎 阅读(273) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 解:这题其实有限制条件,但是没看出来。就是要从根节点一直到叶子节点,全部的和。中间的节点不会断层,其实就是深度优先遍历的类型 /* stru 阅读全文
posted @ 2020-05-28 16:21 大老虎打老虎 阅读(162) 评论(0) 推荐(0) 编辑
摘要:题目描述 输入一个非空整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 //每次都找左右树的分界点,然后判断 bool judge(vector<int> sequence, int i_start, int i_en 阅读全文
posted @ 2020-05-28 13:52 大老虎打老虎 阅读(185) 评论(0) 推荐(0) 编辑
摘要:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 阅读全文
posted @ 2020-05-17 20:38 大老虎打老虎 阅读(198) 评论(0) 推荐(0) 编辑
摘要:由 n 个连接的字符串 s 组成字符串 S,记作 S = [s,n]。例如,["abc",3]=“abcabcabc”。 如果我们可以从 s2 中删除某些字符使其变为 s1,则称字符串 s1 可以从字符串 s2 获得。例如,根据定义,"abc" 可以从 “abdbec” 获得,但不能从 “acbbe 阅读全文
posted @ 2020-05-17 17:48 大老虎打老虎 阅读(241) 评论(0) 推荐(0) 编辑
摘要:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解:这题一看就是要用个数学方法,没想出来。看了答案后发现有个极简单方法 每个台阶都有跳与不跳两种情况(除了最后一个台阶),最后一个台阶必须跳。所以共用2^(n-1)中情况 而且用 阅读全文
posted @ 2020-05-11 19:50 大老虎打老虎 阅读(114) 评论(0) 推荐(0) 编辑
摘要:输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。 例如:给定的树 A: 3 / \ 4 5 / \ 1 2给定的树 B: 4 / 1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。 示例 1 阅读全文
posted @ 2020-04-10 23:06 大老虎打老虎 阅读(210) 评论(0) 推荐(0) 编辑
摘要:给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 解:这道题乍一看,想法是用栈,对根节点 阅读全文
posted @ 2020-04-09 23:12 大老虎打老虎 阅读(122) 评论(0) 推荐(0) 编辑
摘要:给定一个整数 n,求以 1 ... n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ \ 2 1 2 3 解:这道题想了很久,还是有点不明白 阅读全文
posted @ 2020-04-01 23:49 大老虎打老虎 阅读(183) 评论(0) 推荐(0) 编辑
摘要:矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。 如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。 给出两个矩形,判断它们是否重叠并返回结果。 示例 1: 输入:rec1 = [ 阅读全文
posted @ 2020-03-31 23:31 大老虎打老虎 阅读(154) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示