![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
OJ练习
以力扣和牛客网为主。
每天靠近一点点
这个作者很懒,什么都没留下…
展开
-
【牛客网】木棒拼图
一、题目描述:有一个由很多木棒构成的集合,每个木棒有对应的长度,请问能否用集合中的这些木棒以某个顺序首尾相连构成一个面积大于 0 的简单多边形且所有木棒都要用上,简单多边形即不会自交的多边形。初始集合是空的,有两种操作,要么给集合添加一个长度为 L 的木棒,要么删去集合中已经有的某个木棒。每次操作结束后你都需要告知是否能用集合中的这些木棒构成一个简单多边形。输入描述:每组测试用例仅包含一组数据,每组数据第一行为一个正整数 n 表示操作的数量(1 ≤ n ≤ 50000) ,接下来有n行,每行第一个整原创 2020-07-14 12:05:10 · 425 阅读 · 0 评论 -
【牛客网】跟奥巴马一起编程(15)
一、题目描述:美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在你也跟他一起画吧!输入描述:输入在一行中给出正方形边长N(3<=N<=20)和组成正方形边的某种字符C,间隔一个空格。输出描述:输出由给定字符C画出的正方形。但是注意到行间距比列间距大,所以为了让结果看上去更像正方形,我们输出的行数实际上是列数的50%(四舍五原创 2020-06-17 23:07:28 · 786 阅读 · 0 评论 -
【牛客网】超长正整数相加
一、题目描述:请设计一个算法完成两个超长正整数的加法。接口说明:public String AddLongInteger(String addend, String augend){/在这里实现功能/return null;}输入描述:输入两个字符串数字输出描述:输出相加后的结果,string型示例1输入999999999999999999999999999999999999999999999999991输出1000000000000000000000000000原创 2020-06-17 21:55:49 · 298 阅读 · 0 评论 -
【牛客网】计算糖果
一、题目描述:A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。这里保证最多只有一组整数A,B,C满足所有题设条件。输入描述:输入为一行,一共4个整数,分别为A - B,B - C,A + B,B + C,用空格隔开。 范围均在-30到30之间(闭区间)。输出描原创 2020-06-08 13:49:05 · 181 阅读 · 0 评论 -
n个数里出现次数大于等于n/2的数
一、题目描述:输入n个整数,输出出现次数大于等于数组长度一半的数。输入描述:每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。输出描述:输出出现次数大于等于n/2的数。示例1输入3 9 3 2 5 6 7 3 2 3 3 3输出3链接:https://www.nowcoder.com/questionTerminal/eac8c671a0c345b38aa0c07aba40097b来源:牛客网二、代码描述:为什么要用字符串原创 2020-06-08 13:09:36 · 526 阅读 · 0 评论 -
【牛客网】删除公共字符
一、题目描述:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”输入描述:每个测试输入包含2个字符串输出描述:输出删除后的字符串示例1输入They are students.aeiou输出Thy r stdnts.链接:https://www.nowcoder.com/questionTerminal/f0db4c36573d459cae原创 2020-06-07 12:46:25 · 346 阅读 · 0 评论 -
【牛客网】合法括号序列判断
一、题目要求:对于一个字符串,请设计一个算法,判断其是否为一个合法的括号串。给定一个字符串A和它的长度n,请返回一个bool值代表它是否为一个合法的括号串。测试样例:“(()())”,6返回:true测试样例:“()a()()”,7返回:false测试样例:“()(()()”,7返回:false链接https://www.nowcoder.com/questionTerminal/d8acfa0619814b2d98f12c071aef20d4来源:牛客网二、解题思路原创 2020-06-05 23:17:52 · 253 阅读 · 0 评论 -
【剑指Offer】栈的压入、弹出序列
一、题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)二、解题思路:创建一个辅助栈保存栈的压入顺序,比如第一个元素的为1,而弹出栈的第一个元素是4,不相等,继续向辅助栈压入元素直到辅助栈的栈顶元素等于弹出栈当前元素,则弹出辅助栈的栈顶原创 2020-05-18 15:12:04 · 96 阅读 · 0 评论 -
【牛客网】下厨房
一、题目描述牛牛想尝试一些新的料理,每个料理需要一些不同的材料,问完成所有的料理需要准备多少种不同的材料。输入描述:每个输入包含 1 个测试用例。每个测试用例的第 i 行,表示完成第 i件料理需要哪些材料,各个材料用空格隔开,输入只包含大写英文字母和空格,输入文件不超过 50 行,每一行不超过 50 个字符。输出描述:输出一行一个数字表示完成所有料理需要多少种不同的材料。示例...原创 2020-05-04 11:42:56 · 200 阅读 · 0 评论 -
【牛客网】给你一个数N求最少需要多少步可以变为Fibonacci数。
链接:https://www.nowcoder.com/questionTerminal/18ecd0ecf5ef4fe9ba3f17f8d00d2d66?pos=11&orderByHotValue=1来源:牛客网ibonacci数列是这样定义的:F[0] = 0F[1] = 1for each i ≥ 2: F[i] = F[i-1] + F[i-2]因此,Fibonacc...原创 2020-05-03 10:30:36 · 673 阅读 · 0 评论 -
【力扣】901.股票价格跨度
一、题目描述:编写一个 StockSpanner 类,它收集某些股票的每日报价,并返回该股票当日价格的跨度。今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。例如,如果未来7天股票的价格是 [100, 80, 60, 70, 60, 75, 85],那么股票跨度将是 [1, 1, 1, 2, 1, 4, 6]。示例:输入:["StockSp...原创 2020-05-02 22:04:02 · 206 阅读 · 0 评论 -
【力扣】690.员工的重要性
一、题目描述:给定一个保存员工信息的数据结构,它包含了员工唯一的id,重要度 和 直系下属的id。比如,员工1是员工2的领导,员工2是员工3的领导。他们相应的重要度为15, 10, 5。那么员工1的数据结构是[1, 15, [2]],员工2的数据结构是[2, 10, [3]],员工3的数据结构是[3, 5, []]。注意虽然员工3也是员工1的一个下属,但是由于并不是直系下属,因此没有体现在员工...原创 2020-05-02 12:17:03 · 188 阅读 · 0 评论 -
【剑指Offer】二维数组中的查找
一、题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。二、解题思路及代码描述:方法一:找出左下角或者右上角的值作为基准值。使用二分查找。以左下角为例,目标值比基准值大,row++;目标值比基准值小,col–;直到两者相等,循环结束。publ...原创 2020-05-01 13:36:56 · 101 阅读 · 0 评论 -
【力扣】997. 找到小镇的法官
一、题目描述:在一个小镇里,按从 1 到 N 标记了 N 个人。传言称,这些人中有一个是小镇上的秘密法官。如果小镇的法官真的存在,那么:小镇的法官不相信任何人。每个人(除了小镇法官外)都信任小镇的法官。只有一个人同时满足属性 1 和属性 2 。给定数组 trust,该数组由信任对 trust[i] = [a, b] 组成,表示标记为 a 的人信任标记为 b 的人。如果小镇存在秘密...原创 2020-04-30 23:28:30 · 262 阅读 · 0 评论 -
【剑指Offer】二叉树的镜像
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5解题思...原创 2020-04-29 17:01:41 · 89 阅读 · 0 评论 -
【剑指Offer】数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。注意要点:注意指数可能为正数也可能为负数。代码:public class Solution { public double Power(double base, int exponent) { if(base...原创 2020-04-29 16:38:14 · 80 阅读 · 0 评论 -
【力扣】958. 二叉树的完全性检验
一、题目描述:给定一个二叉树,确定它是否是一个完全二叉树。百度百科中对完全二叉树的定义如下:若设二叉树的深度为 h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。(注:第 h 层可能包含 1~ 2h 个节点。)输入:[1,2,3,4,5,6]输出:true解释:最后一层前的每一层都是满的(即,结点值为 {1...原创 2020-04-24 10:56:34 · 176 阅读 · 0 评论 -
【力扣】145. 二叉树的后序遍历
一、题目描述:给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal著作权归领扣网络所有。商业转载请联系官方授...原创 2020-04-06 22:05:59 · 143 阅读 · 0 评论 -
【力扣】100. 相同的树
一、题目描述:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 ...原创 2020-04-04 18:53:08 · 371 阅读 · 0 评论 -
【力扣】94. 二叉树的中序遍历
一、题目描述:给定一个二叉树,返回它的中序遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-inorder-traversal著作权归领扣网络所有。商业转载请联系官方授权,非商业转载...原创 2020-04-04 16:56:02 · 130 阅读 · 0 评论 -
[力扣]110. 平衡二叉树
一、解题思路:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,nu...原创 2020-04-04 14:48:26 · 144 阅读 · 0 评论 -
【力扣】101.对称二叉树
一、题目描述:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [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来源:力扣(LeetCode)链接:ht...原创 2020-04-04 13:30:13 · 123 阅读 · 0 评论 -
【力扣】144. 二叉树的前序遍历
一、题目描述:给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-preorder-traversal著作权归领扣网络所有。商业转载请联...原创 2020-03-31 21:30:29 · 126 阅读 · 0 评论 -
【力扣】104. 二叉树的最大深度
一、题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。来源:力扣(LeetCode)链接:https://leetcode-cn...原创 2020-03-31 21:21:13 · 166 阅读 · 0 评论 -
[力扣]1260. 二维网格迁移
一、题目描述:给你一个 m 行 n 列的二维网格 grid 和一个整数 k。你需要将 grid 迁移 k 次。每次「迁移」操作将会引发下述活动:位于 grid[i][j] 的元素将会移动到 grid[i][j + 1]。位于 grid[i][n - 1] 的元素将会移动到grid[i + 1][0]。位于 grid[m - 1][n - 1] 的元素将会移动到 grid[0][0]。...原创 2020-03-29 22:03:44 · 139 阅读 · 0 评论 -
【力扣】155. 最小栈
一、题目描述:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() --检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.pus...原创 2020-03-28 18:31:06 · 130 阅读 · 0 评论 -
【力扣】232. 用栈实现队列
一、题目描述:使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // 返回 1que...原创 2020-03-28 14:27:24 · 115 阅读 · 0 评论 -
【力扣】225. 用队列实现栈
一、题目描述:使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 l...原创 2020-03-28 13:55:18 · 94 阅读 · 0 评论 -
【力扣】20. 有效的括号
一、题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 ...原创 2020-03-28 12:26:13 · 149 阅读 · 0 评论 -
[力扣] 415. 字符串相加
一、题目描述:给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。注意:num1 和num2 的长度都小于 5100.num1 和num2 都只包含数字 0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。来源:力扣(LeetCode)链接:https://leetcode-cn....原创 2020-03-24 17:24:25 · 147 阅读 · 0 评论 -
【力扣】8. 字符串转换整数 (atoi)
一、题目描述:请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,...原创 2020-03-15 20:42:18 · 74 阅读 · 0 评论 -
【力扣】92. 反转链表 II
一、题目描述:反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL来源:力扣(LeetCode)链接:https://leetcode-cn.com/p...原创 2020-03-14 23:03:22 · 114 阅读 · 0 评论 -
【力扣】11. 盛最多水的容器
一、题目描述:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容...原创 2020-03-12 11:26:48 · 166 阅读 · 0 评论 -
【力扣】61. 旋转链表
一、题目描述:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4...原创 2020-03-10 21:38:33 · 131 阅读 · 0 评论 -
【力扣】24. 两两交换链表中的节点
一、题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs著作...原创 2020-03-09 12:09:54 · 157 阅读 · 0 评论 -
【力扣】2. 两数相加
一、题目描述:给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储 一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -&g...原创 2020-03-07 20:11:52 · 73 阅读 · 0 评论 -
【牛客网】链表中倒数第k个结点
一、题目描述输入一个链表,输出该链表中倒数第k个结点。二、解题思路:1、求链表长度size。2、倒数第k个节点等于正数第(size-k)个节点。3、遍利链表,走(size-k)步即可。三、代码描述:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { ...原创 2020-03-03 14:45:20 · 109 阅读 · 0 评论 -
【力扣】21. 合并两个有序链表
一、题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-list...原创 2020-03-03 14:34:52 · 141 阅读 · 0 评论 -
【牛客网】链表分割
一、题目描述编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前给定一个链表的头指针 ListNode* pHead,请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。二、解题思路:1、首先判断链表是否为空或者只有一个元素。2、创建两个链表small和big,若当前节点元素比x小插入到small链表中;若当前节点元素比x大插入到big...原创 2020-02-29 22:08:56 · 145 阅读 · 0 评论 -
【力扣】82. 删除排序链表中的重复元素 II
一、题目描述:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3来源:力扣(LeetCode)链接:https://leetc...原创 2020-02-29 20:46:34 · 108 阅读 · 0 评论