
一定要多多练题
唸朽
持续学习
展开
-
二叉搜索树的后序遍历
JZ23https://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd?tpId=13&&tqId=11176&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking//思路:最后一个数字是根x,确保前部分元素都小于x,后部分元素都大于x(递归)public class Solution { .原创 2021-07-12 19:51:24 · 105 阅读 · 0 评论 -
不相邻最大子序列和
题目描述给你一个n,和一个长度为n的数组,在不同时选位置相邻的两个数的基础上,求该序列的最大子序列和(挑选出的子序列可以为空)。输入 3,[1,2,3] 返回值 4 说明:有[],[1],[2],[3],[1,3] 4种选取方式其中[1,3]选取最优,答案为4输入 4,[4,2,3,5] 返回值 9 说明:其中[4,5]的选取方案是在满足不同时选取相邻位置的数的情况下是最优的答案牛客链接:https://...原创 2021-05-09 15:33:09 · 1111 阅读 · 2 评论 -
最长公共子串
题目描述:给定两个字符串str1和str2,输出两个字符串的最长公共子串,题目保证str1和str2的最长公共子串存在且唯一。示例:输入 "1AB2345CD","12345EF" 返回值 "2345"思路:滑动窗口start为滑动窗口的左边界,end为滑动窗口的右边界。start和end初始值为0和1。新建字符串str为str2的start下标到end下标的字符串,确保end不大于str2的长度的情况下:res为最后要求的最长公共子串情况1:当...原创 2021-05-09 10:03:00 · 96 阅读 · 0 评论 -
合并两个有序的数组
题目描述:给出两个有序的整数A和数组B,请将数组B合并到数组A中,变成一个有序的数组注意:可以假设数组A有足够的空间存放B数组的元素,A和B中初始的元素数目分别为m和n牛客链接:https://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665?tpId=188&tqId=38286&rp=1&ru=%2Factivity%2Foj&qru=%2Fta%2Fjob-code-high-week%2Fqu.原创 2021-05-09 08:53:17 · 255 阅读 · 0 评论 -
最长回文子串
题目描述对于一个字符串,请设计一个高效算法,计算其中最长回文子串的长度。给定字符串A以及它的长度n,请返回最长回文子串的长度。牛客链接:https://www.nowcoder.com/practice/b4525d1d84934cf280439aeecc36f4af?tpId=188&tqId=38292&rp=1&ru=%2Factivity%2Foj&qru=%2Fta%2Fjob-code-high-week%2Fquestion-ranking&原创 2021-05-07 20:33:19 · 106 阅读 · 0 评论 -
二分查找-||
题目描述:请实现有重复数字的升序数组的二分查找给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1牛客链接:https://www.nowcoder.com/practice/4f470d1d3b734f8aaf2afb014185b395?tpId=188&tqId=38290&rp=1&ru=%2Factivity%2Foj&qru=%2Fta%2Fjo.原创 2021-05-07 19:57:29 · 85 阅读 · 0 评论 -
括号序列
题目描述:给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列,括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。牛客网址:https://www.nowcoder.com/practice/37548e94a270412c8b9fb85643c8ccc2?tpId=188&tqId=38303&rp=1&ru=%2Factivity%2Foj&qru=%2F原创 2021-05-07 19:11:09 · 178 阅读 · 0 评论 -
另类加法
给定两个intA和B。编写一个函数返回A+B的值,但不得使用+或其他算数运算符。测试样例: 1,2 返回:3位运算!1.二进制位异或运算相当于对应为相加,不考虑进位2.二进制位与运算左移一位相当于对应位相加之后的进位3.两个数相加:对应二进制位相加的结果+进位的结果import java.util.*;public class UnusualAdd { public int addAB(int A, int B) { if(B ...原创 2021-04-22 14:55:27 · 127 阅读 · 0 评论 -
删数
题目描述:有一个数组a[N]顺序存放0~N-1,要求每隔两个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置。以8个数(N=7)为例:{0,1,2,3,4,5,6,7},0->1->2(删除)->3->4->5(删除)->6->7->0(删除),如此循环直到最后一个数被删除。输入描述:每组数据为一行一个整数n(小于等于1000),为数组成员数,如果大于1000,则对a[999]进行计算。输出描述:一行输出最后一个被删掉的数的原创 2021-04-19 16:05:41 · 226 阅读 · 0 评论 -
求最小公倍数
正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。输入描述:输入两个正整数A和B。输出描述:输出A和B的最小公倍数。示例 输入 5 7 输出 35【解题思路】两个数a,b的最小公倍数是a*b/gys(a,b)。所以,求两个数的最小公倍数,就可以先求出它们的最大公约数。求最大公约数:1.a/b,令r为所得余数(O≤r<b)若r=0,算法结束,a即为答案2.否则互换:置a<—b...原创 2021-04-19 15:48:27 · 187 阅读 · 0 评论 -
n个数里出现次数大于等于n/2的数
输入n个整数,输出出现次数大于等于数组长度一半的数。输入描述:每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。输出描述:输出出现次数大于等于n/2的数。示例 输入 3 9 3 2 5 6 7 3 2 3 3 3 输出 3重点:用到 .split(" ") 按照空格分隔字符串 Integer.valueOf(str) 将数字字符串转为int方法一:两层循环 当arr...原创 2021-04-12 21:13:30 · 261 阅读 · 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之间(闭区间)。输出描述:输出为一行,如果原创 2021-04-12 20:47:35 · 142 阅读 · 1 评论 -
用两个栈实现队列
用两个栈来实现一个队列,完成队列的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-04-12 15:35:01 · 65 阅读 · 0 评论 -
神奇的口袋(容积40计算方法数)
有一个神奇的口袋,总的容积是40,用这个口袋可以变出一些物品,这些物品的总体积必须是40。John现在有n个想要得到的物品,每个物品的体积分别是a1,a2……an。John可以从这些物品中选择一些,如果选出的物体的总体积是40,那么利用这个神奇的口袋,John就可以得到这些物品。现在的问题是,John有多少种不同的选择物品的方式。输入描述:输入的第一行是正整数n (1 <= n <= 20),表示不同的物品的数目。接下来的n行,每行有一个1到40之间的正整数,分别给出a1,a2……an的值。原创 2021-04-12 15:28:59 · 290 阅读 · 0 评论 -
删除公共字符串
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”输入描述:每个测试输入包含2个字符串输出描述:输出删除后的字符串示例 输入 They are students. aeiou 输出 Thy r stdnts.import java.util.*;public class Main{ public static vo...原创 2021-04-11 14:24:12 · 149 阅读 · 0 评论 -
买苹果(保证袋子装满)
小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果,小易将不会购买。输入描述:输入一个整数n,表示小易想购买n(1 ≤ n ≤ 100)个苹果输出描述:输出一个整数表示最少需要购买的袋数,如果不能买恰好n个苹果则输出-1示例 输入 20 输出 3import java.util.*;public...原创 2021-04-11 14:13:43 · 82 阅读 · 0 评论 -
合法括号序列判断
给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)。测试样例: "(()())",6 返回:true测试样例: "()a()()",7 返回:false测试样例: "()(()()",7 返回:false思路:进栈出栈判断栈是否为空遍历->若是( 进栈 若是 ) ①栈为空表示没有与其配对的左括号fa...原创 2021-04-11 13:56:40 · 330 阅读 · 0 评论 -
字符串中找出连续最长的数字串
读入一个字符串str,输出字符串str中的连续最长的数字串输入描述:测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。示例 输入:abcd12345ed125ss123456789 输出:123456789import java.util.*;public class Main{ public static void main(String[] args){ Scanner sc = ne...原创 2021-04-11 13:35:11 · 100 阅读 · 0 评论 -
数组中的逆序对
给定一个int数组A和它的大小n,对于这组数能组成的任意两个数组,若前面一个大于后面一个数字,则这两个数字组成一个逆序对。请设计一种高效的算法返回A中存在的逆序对个数。要求n不大于5000。测试样例:[1,2,3,4,5,6,7,0],8 返回:7方法一:逐个比较该数字与其后面的数字 时间复杂度:n²import java.util.*;public class AntiOrder { public int count(int[] A, int n) { i...原创 2021-04-11 13:21:53 · 192 阅读 · 0 评论 -
汽水瓶
有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝?输入描述:输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1<=n<=100),表示小张手上的空原创 2021-04-10 10:40:59 · 120 阅读 · 0 评论 -
回文串①判断②插入方法数
1.给定一个字符串,请编写一个函数判断该字符串是否回文。如果回文请返回true,否则返回false。示例1 输入 "absba" 输出 true示例2 输入 "ranko" 输出 falseimport java.util.*;public class Solution { public boolean judge (String str) { int i=0; //i为左边的下标 int j=str...原创 2021-04-09 21:01:03 · 181 阅读 · 0 评论