题库
尚哲轩
这个作者很懒,什么都没留下…
展开
-
反转链表
输入一个链表,反转链表后,输出新链表的表头。1.利用选择语句,找到空链表的情况,此情况返回NULL空指针,因为空链表不能反转,或者说反转之后还是一个空链表,返回空。2.利用三个指针p0"前指针"、p1“当前指针”、p2"后指针"来分批处理链表元素,p0置为NULL,它将作为链表的尾结点向前推进处理,p1指向旧链表的头指针head,p2指向旧链表的头指针的next结点。3.开始遍历链表,循环判定因子为p1,当它为空时到达链表尾部跳出循环。否则在表中执行循环内逻辑:将p1指向的当前结点的下一个结点指向p原创 2020-09-11 15:20:43 · 2789 阅读 · 0 评论 -
DP问题:数字三角形
描述给定一个数字三角形,找到从顶部到底部的最小路径和。每一步可以移动到下面一行的相邻数字上。样例 1输入下列数字三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]输出: 11解释: 从顶到底部的最小路径和为11 ( 2 + 3 + 5 + 1 = 11)。样例 2输入下列数字三角形:[[2],[3,2],[6,5,7],[4,4,8,1]]输出: 12解释: 从顶到底部的最小路径和为12 ( 2 + 2 + 7 + 1 = 12)。这是一道典型的D原创 2020-09-10 16:59:11 · 203 阅读 · 0 评论 -
牛客巅峰赛:移动字母
题目描述给定一个只包含小写字母的字符串s,牛牛想将这个字符串中的所有’a’字母全部移动到字符串的末尾,而且保证其它字符的相对顺序不变。其中字符串s的长度<=1e6。一开始的思路是使用一个linkedlist,对string的每个char进行判断,若不等于‘a’,存入linked;设定一个计数值index,若==‘a’,则index+1,最后再将a加入到linkedlist中去,就得到了排列好顺序的字符串,代码如下:public class Solution { /** * @p原创 2020-09-08 14:36:28 · 234 阅读 · 0 评论 -
判别是否为数字或字母
分离一个字符串的数字与字母应用了Character的方法使用isDigit判断是否为数字使用isLetter判断是否为字母import java.util.*;public class match { public static void main(String[] args) { // TODO Auto-generated method stub int [] dig =new int[6]; String [] ssr =new String[9]; String st原创 2020-09-07 15:58:21 · 585 阅读 · 0 评论 -
剑指offer:二进制中1的个数
题目描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。核心代码public class Solution { public int NumberOf1(int n) { }}方法一笨方法:先将整数转化为二进制的数,然后存入数组,进行遍历,查出有多少个1十进制转换为二进制的方法第一种:除基倒取余法这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2…依次循环,直到商为0结束,把余数倒着依次排列,就构原创 2020-09-04 22:36:27 · 113 阅读 · 0 评论 -
剑指offer:变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。方法一和之前的动态规划一样,此时的递推公式f(n)=f(n-1)+f(n-2)+……f(1)public class Solution { public int JumpFloorII(int target) { int [] index =new int[target+1]; index[0]=1; in原创 2020-09-01 14:56:17 · 94 阅读 · 0 评论 -
剑指offer:跳台阶
题目一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。其实相当于一个斐波拉契数列,假设f[i]表示在第i个台阶上可能的方法数。逆向思维。如果我从第n个台阶进行下台阶,下一步有2中可能,一种走到第n-1个台阶,一种是走到第n-2个台阶。所以f[n] = f[n-1] + f[n-2].。初始条件为f[0] = f[1] = 1;公式为f[n] = f[n-1] + f[n-2]方法一递归public class Solution原创 2020-08-31 21:22:22 · 87 阅读 · 0 评论 -
剑指offer:二维数组的查找
题目在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。核心代码public class Solution { public boolean Find(int target, int [][] array) { }}方法一将整个数组遍历一遍,这样简单粗暴,但是时间较长public class Solution { public原创 2020-08-31 16:03:49 · 84 阅读 · 0 评论 -
牛客网巅峰赛:牛牛的fib序列
题目牛牛重新定义了斐波那契数列,牛牛定义f(n) = f(n-1)+f(n+1); f(1)=a, f(2)=b, 现在给定初始值 a, b,现在求第n项f(n)%1000000007的值。其中 1<=|x|, |y|, n<=10^9示例1输入:1,2,3输出:1说明:f(2)=f(3)+f(1), 所以f(3) = f(2)-f(1)=2-1=1示例2输入:-1,-2,3输出:1000000006说明:同样例1:f(3)=-1%1000000007=1000000006原创 2020-08-24 15:24:02 · 184 阅读 · 0 评论 -
牛客巅峰赛:卡牌问题
题目描述有nm张牌叠在一起,称之为旧牌库.牌由旧牌库底部的第一张从1开始编号,旧牌库顶的牌编号就是nm.每张牌上有一个数字,设编号为i的牌上的数字为a[i],保证满足a[i]=((i-1)%m)+1。现给出a和b,进行两个操作:1、每次将旧牌库最底下的一张牌拿出来,放到旧牌库顶,重复a次。2、建一个新牌库,初始新牌库没有卡牌,每次先将旧牌库最底下的牌拿出来,放在新牌库顶,再将旧牌库最顶上的牌拿出来,放到新牌库顶,重复b次,保证2b<=nm,最后将旧牌库所有剩余卡牌直接放到新牌库顶。再给出原创 2020-08-22 14:50:33 · 476 阅读 · 0 评论 -
小米编程真题:风口的猪-中国牛市
题目描述风口之下,猪都能飞。当今中国股市牛市,真可谓“错过等七年”。 给你一个回顾历史的机会,已知一支股票连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该股票第i天的股价。 假设你一开始没有股票,但有至多两次买入1股而后卖出1股的机会,并且买入前一定要先保证手上没有股票。若两次交易机会都放弃,收益为0。 设计算法,计算你能获得的最大收益。 输入数值范围:2<=n<=100,0<=prices[i]<=100。示例1输入:3,8,5,1,原创 2020-08-22 10:52:36 · 321 阅读 · 0 评论 -
牛客网巅峰赛之魔法数字
题目:一天,牛妹找牛牛做一个游戏,牛妹给牛牛写了一个数字n,然后又给自己写了一个数字m,她希望牛牛能执行最少的操作将他的数字转化成自己的。操作共有三种,如下: 1.在当前数字的基础上加一,如:4转化为5 2.在当前数字的基础上减一,如:4转化为3 3.将当前数字变成它的平方,如:4转化为16 你能帮牛牛解决这个问题吗?具体思路:1 、如果m比n小,则一直进行减一操作,一共有n-m次。2 、如果m比n大,则我们需要找到离m的算术平方根最接近的整数k,然后判断是...原创 2020-08-21 13:49:34 · 305 阅读 · 0 评论 -
牛客巅峰赛:破译密码
**题目描述题面:**牛牛收到了一个任务,任务要求牛牛破译一个密码。牛牛将被给予两个字符串s1和s2,均由四个小写字母构成。需要破译的密码为从s1变换到s2最少需要的变换次数。变换的方式是这样:每次变换可以选择当前字符串中的一个位置,然后剩下的三个位置的字符从左到右分别加上2,3,5,若是超出’z’,则重新从’a’开始,例如:对于字符串"abcd",我们选择’c’的位置进行变换,则变换之后的字符串为"ceci";对于字符串"qyzr",我们选择’r’位置进行变换,则变换之后的字符串为"sber"。原创 2020-08-21 16:50:33 · 262 阅读 · 0 评论