牛客力扣
刷题
苦逼打工人呜呜~
这个作者很懒,什么都没留下…
展开
-
牛客--拆分词句
描述给定一个字符串s和一组单词dict,判断s是否可以用空格分割成一个单词序列,使得单词序列中所有的单词都是dict中的单词(序列可以包含一个或多个单词)。例如:给定s=“nowcode”;dict=[“now”, “code”].返回true,因为"nowcode"可以被分割成"now code".https://www.nowcoder.com/practice/5f3b7bf611764c8ba7868f3ed40d6b2c?tpId=46&tqId=29041&tPage原创 2021-05-28 16:22:36 · 83 阅读 · 0 评论 -
手套问题
链接:https://www.nowcoder.com/questionTerminal/365d5722fff640a0b6684391153e58d8来源:牛客网在地下室里放着n种颜色的手套,手套分左右手,但是每种颜色的左右手手套个数不一定相同。A先生现在要出门,所以他要去地下室选手套。但是昏暗的灯光让他无法分辨手套的颜色,只能分辨出左右手。所以他会多拿一些手套,然后选出一双颜色相同的左右手手套。现在的问题是,他至少要拿多少只手套(左手加右手),才能保证一定能选出一双颜色相同的手套。给定颜色种数n原创 2021-05-10 21:06:48 · 190 阅读 · 0 评论 -
z字形变换
将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入:s = “PAY原创 2021-05-09 15:25:14 · 177 阅读 · 0 评论 -
最长回文子串
给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = “babad”输出:“bab”解释:“aba” 同样是符合题意的答案。示例 2:输入:s = “cbbd”输出:“bb”示例 3:输入:s = “a”输出:“a”示例 4:输入:s = “ac”输出:“a”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindromic-substring解题思路:1.如果字符串长度为1,那么一定原创 2021-05-09 09:39:35 · 132 阅读 · 0 评论 -
二叉树的下一结点
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。两种方法方法一:还原为二叉树求解因为题中定义的结点还包含其父亲结点的指针,那么我们很容易就可以找到根结点。然后保存中序遍历,再找出给定结点的下一结点。代码如下:import java.util.*;public class Solution {//因为中序遍历使用了递归//所以要在类内,方法外定义一个list保存中序遍历的结点 ArrayList<原创 2021-04-22 15:22:13 · 71 阅读 · 0 评论 -
牛客之连续最大和
一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3输入描述:输入为两行。 第一行一个整数n(1 <= n <= 100000),表示一共有n个元素 第二行为n个数,即每个元素,每个整数都在32位int范围内。以空格分隔。输出描述:所有连续子数组中和最大的值。示例1输入3-1 2 1输出3解题思路:动态规划设dp[i]为第 i 个数与前面最大和数dp[i-1]之和的最大数,那么若 dp[i] + dp[i-1]原创 2021-04-22 10:14:37 · 158 阅读 · 0 评论 -
字符流中第一个不重复的字符
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。后台会用以下方式调用Insert 和 FirstAppearingOnce 函数返回值描述:如果当前字符流没有存在出现一次的字符,返回#字符。解题思路:题中的“不重复” “第一次”都是关键词,字符串不重复问题很容易想到用哈希,但是由于哈希存放的顺序是根据hashcode,并不是自原创 2021-04-21 19:50:23 · 97 阅读 · 2 评论 -
牛客之排序子序列
牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列.如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2输入描述:输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)第二行包括n个整数A_i(1 ≤ A_i ≤ 10^9),表示数组A的每个数字。输出描述:输出一个转载 2021-04-21 10:48:58 · 84 阅读 · 0 评论 -
牛客之末尾为0的个数
输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n = 10; n! = 3628800,所以答案为2输入描述:输入为一行,n(1 ≤ n ≤ 1000)输出描述:输出一个整数,即题目所求示例1输入10输出2解题思路:首先要想到末尾为0其实就是偶数5的结果,再细说就是25的结果,当然在阶乘中2的个数远大于5,所以我们只需要知道在阶乘计算过程中有多少个5。输入一个正整数n,即知道了从n到1这每个数里面含有多少个5,再相加就可以得知整个过程中有多少个5.代码如下:publi原创 2021-04-21 17:14:33 · 124 阅读 · 0 评论 -
剑指offer 53 表示数值的字符串
题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。示例1输入“123.45e+6”返回值true示例2输入“1.2.3”返回值false解题思路:关于小数点,不能放在第一位或者最后一位,也只能放在e的前面,且只能有一个关于e,不能放在第一位或者最后一位,且只能有一个关于±,如果有原创 2021-04-19 15:28:26 · 55 阅读 · 0 评论 -
将字符串转化为整数
实现函数 atoi 。函数的功能为将字符串转化为整数提示:仔细思考所有可能的输入情况。这个问题没有给出输入的限制,你需要自己考虑所有可能的情况。示例1输入“123”输出123首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字原创 2021-04-18 09:02:19 · 213 阅读 · 0 评论 -
牛客 不要二
二货小易有一个W*H的网格盒子,网格的行编号为0H-1,网格的列编号为0W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根小易想知道最多可以放多少块蛋糕在网格盒子里。输入描述:每组数组包含网格长宽W,H,用空格分割.(1 ≤ W、H ≤ 1000)输出描述:输出一个最多可以放的蛋糕数示例1输入3 2输出原创 2021-04-18 08:26:13 · 172 阅读 · 0 评论 -
剑指offer40 数组中只出出现一次的数字
题目描述一个整型数组里除了两个数字只出现一次,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。示例1输入[1,4,1,6]返回值[4,6]三种方法1.最简单的肯定是用哈希表解决,直接遍历public int[] FindNumsAppearOnce (int[] array) { HashMap<Integer,Integer> map=new HashMap<>(); for(int x:array){原创 2021-04-11 10:40:46 · 61 阅读 · 0 评论