牛客网刷题
牛客网刷题
韩师学子--小倪
不要告诉别人你的计划,只需要让别人知道结果就行了。
展开
-
金额转换(数字转换中文老写)
金额转换(数字转换中文老写)/** * @auther 倪万佳 * @date 2018/10/19 23:08 */public class RenMingBi { private static final char[] data = new char[]{ '零', ...原创 2018-10-20 00:39:03 · 2454 阅读 · 0 评论 -
7.买卖股票的最好时机
题目描述假设你有一个数组,其中第\ ii个元素是股票在第\ ii天的价格。你有一次买入和卖出的机会。(只有买入了股票以后才能卖出)。请你设计一个算法来计算可以获得的最大收益。示例1输入[1,4,2]返回值3示例2输入[2,4,1]返回值2思路:动态规划法:用dp[i]表示第i天卖出的收益,则dp[i]=max(price[i]-min,maxProfit)代码实现:import java.util.*;public cl...原创 2021-02-03 22:41:17 · 159 阅读 · 0 评论 -
52.括号序列
题目描述给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。示例1输入"["返回值false示例2输入"[]"返回值true代码实现:import java.util.*;public class Solution { /** * * @...原创 2021-02-01 23:26:45 · 211 阅读 · 0 评论 -
100.将字符串转化为整数
题目描述实现函数 atoi 。函数的功能为将字符串转化为整数提示:仔细思考所有可能的输入情况。这个问题没有给出输入的限制,你需要自己考虑所有可能的情况。示例1输入"123"返回值123代码实现:import java.util.*;public class Solution { /** * * @param str string字符串 * @return int整型 */ public int ato原创 2021-02-01 22:56:50 · 314 阅读 · 0 评论 -
73.数组中出现次数超过一半的数字
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。示例1输入[1,2,3,2,2,2,5,4,2]返回值2思路:将首次出现的数count+1,与之后的数进行比较,相等则+1,否则—1,最后进行校验是否超过长度的一半。代码实现:public class Solution { public int原创 2021-02-01 21:24:37 · 126 阅读 · 0 评论 -
65.斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n\leq 39n≤39示例1输入4返回值3代码实现:public class Solution { public int Fibonacci(int n) { if (n == 0) return n; int first = 0; int two = 1; f...原创 2021-02-01 20:32:55 · 151 阅读 · 0 评论 -
48.在转动过的有序数组中寻找目标值
题目描述给出一个转动过的有序数组,你事先不知道该数组转动了多少(例如,0 1 2 4 5 6 7可能变为4 5 6 7 0 1 2).在数组中搜索给出的目标值,如果能在数组中找到,返回它的索引,否则返回-1。假设数组中不存在重复项。[3,2,1],1示例1输入[1],0返回值-1示例2输入[3,2,1],1返回值2思路:如果中间的数小于最右边的数,则右半段是有序的,若中间数大于最右边数,则左半段是有序的,我们只要在有序的半段...原创 2021-02-01 20:22:07 · 363 阅读 · 0 评论 -
找出数组中第K大的数
题目描述有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。示例1输入[1,3,5,2,2],5,3返回值2代码实现:import java.util.*;public class Solution { public int findKth(int[] a, int n, int K) { PriorityQueue<...原创 2021-01-31 22:04:20 · 409 阅读 · 0 评论 -
121.字符串的排列
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。示例1输入"ab"返回值["ab","ba"]代码实现:import java.util.*;public class Solution { public ArrayList<S原创 2021-01-31 20:56:23 · 153 阅读 · 0 评论 -
76.用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。代码实现:import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 = new Stack<Integer>(); public void p.原创 2021-01-31 17:56:08 · 76 阅读 · 0 评论 -
8.二叉树根节点到叶子节点和为指定值的路径
题目描述给定一个二叉树和一个值\ sumsum,请找出所有的根节点到叶子节点的节点值之和等于\ sumsum的路径,例如:给出如下的二叉树,\ sum=22sum=22,返回[[5,4,11,2],[5,8,9]]示例1输入{1,2},1返回值[]示例2输入{1,2},3返回值[[1,2]]代码实现:import java.util.*;/* * public class TreeNod...原创 2021-01-31 16:30:53 · 395 阅读 · 0 评论 -
78.反转链表
题目描述输入一个链表,反转链表后,输出新链表的表头。示例1输入{1,2,3}返回值{3,2,1}代码实现:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode ReverseList(L原创 2021-01-31 15:59:39 · 88 阅读 · 0 评论 -
1.大数加法
题目描述以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。(字符串长度不大于100000,保证字符串仅由'0'~'9'这10种字符组成)示例1输入"1","99"返回值"100"代码实现:import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算两个数之和 * @param .原创 2021-01-31 14:12:51 · 166 阅读 · 0 评论 -
33.合并k个已排序的链表
题目描述合并\ kk个已排序的链表并将其作为一个已排序的链表返回。分析并描述其复杂度。示例1输入[{1,2,3},{4,5,6,7}]返回值{1,2,3,4,5,6,7}代码实现:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * ...原创 2021-01-31 13:47:03 · 205 阅读 · 0 评论 -
3.链表中环的入口节点
题目描述对于一个给定的链表,返回环的入口节点,如果没有环,返回null。代码实现:/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class So...原创 2021-01-31 11:53:16 · 141 阅读 · 1 评论 -
93.设计LRU缓存结构
题目描述设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构 get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1) 某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。 当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。若opt=1,接下来两个整数x, y,表示set(x, y)若opt=2,接下来...原创 2021-01-31 11:12:48 · 195 阅读 · 0 评论 -
33.合并有序链表
题目描述将两个有序的链表合并为一个新链表,要求新的链表是通过拼接两个链表的节点来生成的,且合并后新链表依然有序。示例1输入{1},{2}返回值{1,2}示例2输入{2},{1}返回值{1,2}代码实现:import java.util.*;/* * public class ListNode { * int val; * ListNode next = null; * } */public class Solu.原创 2021-01-30 23:40:19 · 129 阅读 · 0 评论 -
68.跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。示例1输入1返回值1示例2输入4返回值5代码实现:public class Solution { public int JumpFloor(int target) { if (target <= 2) { return target; } .原创 2021-01-30 23:06:37 · 112 阅读 · 0 评论 -
16.判断二叉树是否对称
题目描述给定一棵二叉树,判断琪是否是自身的镜像(即:是否对称)例如:下面这棵二叉树是对称的 1 / \ 2 2/ \ / \3 4 4 3下面这棵二叉树不对称。 1 / \ 2 2 \ \ 3 3备注:希望你可以用递归和迭代两种方法解决这个问题示例1输入复制{1,2,2}返回值复制true示例2输入{1,2,3,3,#,2,#}返回值fals...原创 2021-01-30 21:56:57 · 314 阅读 · 0 评论 -
4.判断链表中是否有环
题目描述判断给定的链表中是否有环。如果有环则返回true,否则返回false。你能给出空间复杂度的解法么?原创 2021-01-30 21:01:49 · 170 阅读 · 0 评论 -
链表中的节点每k个一组翻转
题目描述将给出的链表中的节点每\ kk个一组翻转,返回翻转后的链表如果链表中的节点数不是\ kk的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。要求空间复杂度\ O(1)O(1)例如:给定的链表是1\to2\to3\to4\to51→2→3→4→5对于\ k = 2k=2, 你应该返回2\to 1\to 4\to 3\to 52→1→4→3→5对于\ k = 3k=3, 你应该返回3\to2 \to1 \to 4\to 53→2→1→...原创 2021-01-30 17:50:04 · 749 阅读 · 0 评论 -
12.重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。示例1输入[1,2,3,4,5,6,7],[3,2,4,1,6,5,7]返回值{1,2,5,3,4,6,7}解法:递归(传入数组的拷贝)代码实现:/** * Definition for binary tree * pub原创 2021-01-30 16:19:05 · 84 阅读 · 0 评论