![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
牛客网刷题
fes945666
这个作者很懒,什么都没留下…
展开
-
反向打印链表值
class Solution:## 标题 def printListFromTailToHead(self , listNode): # write code here # write code here stack = [] while (listNode != None): stack.append(listNode.val) listNode = listNode.next .原创 2021-10-12 08:35:15 · 87 阅读 · 0 评论 -
第10题:变态跳台阶
根据上一个题目:青蛙只跳1或2可以得出是一个斐波那契问题,即a[n]=a[n-1]+a[n-2],那么能跳1,2,3个台阶时a[n]=a[n-1]+a[n-2]+a[n-3]…依次类推,能推出本题的a[n]=a[n-1]+a[n-2]+…+a[1]所以f(n)=f(n-1)+f(n-2)+…+f(1)因为f(n-1)=f(n-2)+f(n-3)+…+f(1)两式相减得到:f(n)=2*f(n...原创 2019-03-03 21:59:55 · 350 阅读 · 0 评论 -
第十一题:我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
题目:我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?讲解:链接:依旧是斐波那契数列2n的大矩形,和n个21的小矩形其中target2为大矩阵的大小有以下几种情形:1⃣️target <= 0 大矩形为<= 20,直接return 1;2⃣️target = 1大矩形为21,只有一种摆放方法,re...原创 2019-03-04 09:42:03 · 3215 阅读 · 0 评论 -
第十二题:输入一个整数,输出该数二进制表示中1的个数,其中负数用补码表示。
题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。解析:链接:首先判断n是不是负数,当n为负数的时候,直接用后面的while循环会导致死循环,因为负数向左移位的话最高位补1 ! 因此需要一点点特殊操作,可以将最高位的符号位1变成0,也就是n & 0x7FFFFFFF,这样就把负数转化成正数了,唯一差别就是最高位由1变成0,因为少了一个1,所以count加1。如果是...原创 2019-03-04 10:01:35 · 396 阅读 · 0 评论 -
第十三题:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
题目:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。解析:使用快速幂的方法:链接:https://www.nowcoder.com/questionTerminal/1a834e5e3e1a4b7ba251417554e07c00这个测试用例有点问题,因为底数是不能为零的。本来应该是:1、底数为零抛出异常但是这里他是底数和指数都...原创 2019-03-04 11:18:00 · 1051 阅读 · 0 评论 -
第十四题:调整数组顺序使奇数位于偶数前但奇偶数的相对位置不变
思路:新建一个等长数组,首先统计奇数的个数,然后奇数指从0开始填充,偶数从奇数个数的末尾开始填数。然后再重新填回原来的数组中。public class Solution { public void reOrderArray(int [] array) { if(array.length==0||array.length==1) return; ...原创 2019-03-04 17:20:54 · 509 阅读 · 0 评论 -
第十五题:输入一个链表,输出该链表中倒数第k个结点。
思路:两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指正走(k-1)步,到达第k个节点。然后两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了。好思路!! public ListNode FindKthToTail(ListNode head,int k) { if(head==null||k<=0){ ...原创 2019-03-04 19:40:06 · 854 阅读 · 0 评论 -
第十六题:输入一个链表,反转链表后,输出新链表的表头。
思路:循环操作public class Solution { public ListNode ReverseList(ListNode head) { if(head==null) return null; //head为当前节点,如果当前节点为空的话, //那就什么也不做,直接返回null; Lis...原创 2019-03-04 19:57:02 · 434 阅读 · 0 评论 -
华为机试真题
华为研发工程师的编程题:第一题: 有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一瓶满的还给老板。如果小张手上有n个空汽水瓶,最多可以...原创 2019-03-17 20:23:02 · 16810 阅读 · 4 评论 -
华为2019机试题:帮助幼儿在识数阶段做一百以内自然数[0,99]的加减法。
第一题:题目描述:要开发一款教育类App,帮助幼儿在识数阶段做一百以内自然数[0,99]的加减法。屏幕上会显示“1”“2”“3”“4”“5”“6”“7”“8”“9”“0”“+”“-”“=”这些按钮,用户在按了若干按钮之后,如果按了“=”,则会把按“=”之前的字符作为一个算式,计算结果。中间结果或最后结果可以为负数。输入描述:输入为一个字符串,形如“23+86-6+37+24-8-13”....原创 2019-03-21 19:25:38 · 928 阅读 · 0 评论 -
第九题:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法,先后次序不同算不同的结果
f(1) = 1, f(2) = 2, f(3) = 3, f(4) = 5, 可以总结出f(n) = f(n-1) + f(n-2)的规律,但是为什么会出现这样的规律呢?假设现在6个台阶,我们可以从第5跳一步到6,这样的话有多少种方案跳到5就有多少种方案跳到6,另外我们也可以从4跳两步跳到6,跳到4有多少种方案的话,就有多少种方案跳到6,其他的不能从3跳到6什么的啦,所以最后就是f(6) = ...原创 2019-03-03 21:45:05 · 351 阅读 · 0 评论 -
第八题:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项
题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<39首先,斐波那契数列数列是什么数列:斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、2...原创 2019-03-03 21:32:48 · 10213 阅读 · 0 评论 -
第二题 字符串(替换空格)
/* * 请实现一个函数,将一个字符串中的每个空格替换成“%20”。 * 例如,当字符串为We Are Happy. * 则经过替换之后的字符串为We%20Are%20Happy。 * 当遇到空格时添加那个符号,当没有空格时就按照原来的样子。 * 这节的重点是有一个charAt的方法。 */import java.util.*;public class No2 { public ...原创 2019-01-09 20:54:32 · 171 阅读 · 0 评论 -
第三题:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList
package aim_at_offer;import java.util.*;public class No3 { public static void main(String[] args){ //利用构造方法创建链表 ListNode list1=new ListNode(1); ListNode list2=new ListNode(2); ListNode list...原创 2019-01-10 11:02:26 · 851 阅读 · 1 评论 -
第十七题:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。
思路:方法一:非递归版本public class ListNode { int val; ListNode next = null; ListNode(int val) {//构造方法 this.val = val; }}*/public class Solution { public ListNode Merge(ListNode...原创 2019-03-05 11:12:49 · 678 阅读 · 0 评论 -
第十八题:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
思路:对于二叉树来说遍历的时候最好是利用递归的方法1、首先设置标志位result = false,因为一旦匹配成功result就设为true,剩下的代码不会执行,如果匹配不成功,默认返回false。2、递归思想,如果根节点相同则递归调用DoesTree1HaveTree2(),如果根节点不相同,则判断tree1的左子树和tree2是否相同,再判断右子树和tree2是否相同3、注意null的条...原创 2019-03-05 14:08:29 · 1419 阅读 · 2 评论 -
java第四题:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。
(转)https://blog.csdn.net/qq_23217629/article/details/51718996题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。如果理解了递归的访问,那么建树...原创 2019-03-01 21:21:33 · 3179 阅读 · 0 评论 -
第十九题:操作给定的二叉树,将其变换为源二叉树的镜像
思路:直接左右互换然后递归就好了public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}public class Solution { ...原创 2019-03-05 20:20:57 · 246 阅读 · 0 评论 -
第二十题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.传统的方法一:import java.util.ArrayList;public class Solution { ...原创 2019-03-05 20:27:49 · 1962 阅读 · 0 评论 -
第五题:用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。
思路:由于队列是先进先出的,而栈是先进后出的,所以要用2个栈来实现队列的入队出队功能。队列的入队功能与栈的一样,出队时,先将第一个栈中的元素全部弹出,并倒入到第二个栈中,将第二个栈中栈顶元素弹出,并将stack2中剩下的元素倒回到stack1中,即实现一次出队。方法一javapublic class Solution { Stack&lt;Integer&gt; stack1 = n...原创 2019-03-03 20:23:17 · 450 阅读 · 0 评论 -
第七题:在旋转数组中找到最小值
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。思路:方法一:利用二分法,找到中间的位置,左右对比,因为前面是升序(大的数),后面是小的升序(小数的升序),最适合用...原创 2019-03-03 21:06:37 · 295 阅读 · 0 评论 -
第一题:java及python在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
/*在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 * 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 */ /*从右上方开始,比他小的往左边找,比他大的往下找,但是不能break要用continue继续执行。*/import java.util.*;import java.lang....原创 2019-01-09 11:06:42 · 905 阅读 · 0 评论