
牛客刷题
牛客
5星上将
努力让职业变为兴趣
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
牛客:判断给定的链表中是否有环
题目描述 判断给定的链表中是否有环 扩展: 你能给出空间复杂度O(1)的解法么? 思路 我们可以想象两个人在跑步,一个快,一个慢。假如跑步的路线是直线(即没有环或圈),那么慢的永远追不上快的,两个人也永远不会相遇。假如跑步的路线有环或圈(可以想象在操场上跑步),那么快的肯定还能追上慢的(也就是套圈)。 因此我们可以设置两个快慢指针,快指针遍历速度可以设为慢指针的两倍,那么两个指针在一开始是相等的,因为都指向头结点,遍历开始后,快指针如果还能与慢指针相等(也就是上面举例里的套圈),那么就说明链表有环。 空间复原创 2020-11-01 12:21:58 · 372 阅读 · 0 评论 -
算法题:打印N以内所有质数
题目描述: 打印出N以内所有质数 思路 质数的定义是它的因子只有1和它本身,比如2,3,5,7。。。 因此我们在判断的时候可以根据遍历到的数是不是有除了1和它本身之外的因子。同时我们知道如果有因子(即如果是合数)那么,因子必定是小于这个数的,我们就排除掉。 代码 package Algorithm.Interview; import java.util.ArrayList; import java.util.List; public class primeNum { public List<原创 2020-10-24 21:49:25 · 775 阅读 · 0 评论 -
牛客网剑指offer刷题笔记:反转链表(python实现)
题目描述 输入一个链表,反转链表后,输出新链表的表头。 Solution: 首先一开始时链表这么一个结构:pre->head->next。。。 要做的是将原先结构变为pre<-head<-next,即我们要求出next,也就是现在的pre,即原先的next。 为了不让链表断开,需要有临时值来存储结点值。设pre,和next为临时值 CODE: Class S...原创 2019-06-27 20:31:47 · 348 阅读 · 0 评论 -
牛客网剑指offer刷题笔记:数值的整数次方(python实现)
题目描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 Solution: 这道题思路很简单,只是要考虑到所有情况: base = 0 and exp > 0: 0 base = 0 and exp = 0: 无意义 base = 0 and exp < 0: 报错 base !=0 and exp != 0 ...原创 2019-06-24 19:33:36 · 197 阅读 · 0 评论 -
牛客网剑指offer刷题笔记:矩形覆盖(Java实现)
题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? Solution: 这道题目和跳台阶是一样的,因为对于n*2的大矩形来说,它其实就相当于n个台阶,然后小矩形是2*1,可以竖着填充大矩形,也可以横着填充大矩形。不管是竖着还是横着,每次只能相当于是填充一次,因为横竖不可能混着放。 CODE: pub...原创 2019-06-24 19:29:47 · 242 阅读 · 0 评论 -
牛客网剑指offer刷题笔记:变态跳台阶(python实现)
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 Solution1: 根据跳台阶普通版可以推广到青蛙每次可以跳1~n次: 可以得出有一阶的时候 f(1) = 1 ;有两阶的时候可以有 f(2) = 1+f(1)=2;有三阶的时候可以有 f(3) = 1+f(2)+f(1)=4...依此类推,有n阶时f(n)=2^(n...原创 2019-06-24 19:24:17 · 235 阅读 · 0 评论 -
牛客网剑指offer刷题笔记:跳台阶(java实现)
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 Solution: 首先当台阶只有1或2个的时候,答案分别是1和2。 使用递归的思想,青蛙每次可以跳1或2个台阶,那么当他跳1次时,那么剩下n-1个台阶则又可以跳1或2(直到n=2或1);当他跳2次时,那么剩下n-2个台阶则又可以跳1或2(直到n=2或1) C...原创 2019-06-24 19:13:55 · 243 阅读 · 0 评论 -
牛客网剑指offer刷题笔记:斐波那契数列(Python实现)
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 Solution: 经典算法:给出第一项和第二项的值分别是0和1,然后使用迭代的思想 CODE: # -*- coding:utf-8 -*- class Solution: def Fibonacci(self, n): if ...原创 2019-06-24 19:03:17 · 371 阅读 · 0 评论 -
牛客网剑指offer刷题笔记:用两个栈实现队列(Python实现)
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 Solution: 栈A作为入口,栈B作为出口。比如A,B,C,D进栈A,从栈A出的时候是D,C,B,A.再进栈B,出的时候就是A,B,C,D。那么就此实现了一个队列操作,也用了递归的思想。 PUSH方法比较容易,只需要在空串里追加元素即可。 POP方法则是要判断栈B是否为空,如不为空,则直接...原创 2019-06-24 18:59:35 · 278 阅读 · 0 评论 -
牛客网剑指offer刷题笔记:重建二叉树(Python实现)
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 Solution: 已知前序遍历和中序遍历,那么可以知道根节点,然后又分别知道左右子树的节点,运用递归即可。 CODE: # -*- cod...原创 2019-06-24 18:50:17 · 382 阅读 · 0 评论 -
牛客网剑指offer刷题笔记:从尾到头打印链表(Python实现)
题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 Solution: 运用递归 CODE: # -*- coding:utf-8 -*- # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution...原创 2019-06-24 18:45:36 · 230 阅读 · 0 评论 -
牛客网剑指offer刷题笔记:替换空格(Python实现)
题目描述: 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 Solution: 暂时没想到什么好办法,就想到了一个笨的办法:通过空格符号将字符分开成几组字符串(也可以认为是几个单词),然后分别在除了最后一组字符串的其他所有的字符串后添加“20%”。 CODE: # -*- c...原创 2019-06-24 18:40:03 · 313 阅读 · 0 评论 -
牛客网剑指offer刷题笔记:链表中倒数第K个结点(python实现)
题目描述 输入一个链表,输出该链表中倒数第k个结点。 Solution: 定义两个指针,指针A先移动k-1个节点,然后两个指针A,B再一块移动,当指针A移动到尾结点时,则指针B正好移动在倒数第K个结点。 CODE: class Solution: def FindKthToTail(self,head,k): if not head: r...原创 2019-06-25 20:27:15 · 257 阅读 · 0 评论 -
牛客网剑指offer刷题笔记:调整数组顺序使奇数位于偶数前面(python实现)
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 Solution1: 第一种算法用的是冒泡排序的思想,只需要把执行语句从比较大小换位置改为判断是不是奇偶数改位置。 时间复杂度为O(N^2) CODE: class Solution: def re...原创 2019-06-25 20:17:10 · 253 阅读 · 0 评论 -
牛客网剑指offer刷题笔记:二维数组中的查找(Python实现)
题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 Solution: 因为数组是有序的,所以可以从左下角开始比较,若target = 左下角数组元素则直接返回True,若target > 左下角数组元素则数组元素右移;若target...原创 2019-06-14 14:40:00 · 414 阅读 · 0 评论