剑指offer
剑指offer算法
雄仔的点点滴滴
这个作者很懒,什么都没留下…
展开
-
【剑指offer-15】链表中倒数第k个节点
双指针实现打印链表中倒数第k个节点原创 2020-09-09 19:46:33 · 185 阅读 · 0 评论 -
【剑指offer-14】调整数组顺序使奇数位于偶数前面
利用双指针实现调整数组顺序原创 2020-09-09 18:49:40 · 196 阅读 · 0 评论 -
【剑指offer-13】删除链表的节点
单指针实现链表节点的删除操作原创 2020-09-03 22:42:13 · 154 阅读 · 0 评论 -
【剑指offer-10】二进制中1的个数
题目描述请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。题目解析【分析】一个整数减1与该整数进行与运算,则把该整数最右边一个1变成0,重复进行该操作,执行的次数就是该整数二进制中包含1的数量【代码实现】 public int hammingWeight(int n) { int count = 0; while (n != 0){原创 2020-09-02 22:10:06 · 174 阅读 · 0 评论 -
【剑指offer-09】斐波那契数列
题目描述写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。题目解析【分析】1、最常用的解法就是递归调用,先定义结束条件n<=0时返回1,n=1原创 2020-09-02 21:42:47 · 183 阅读 · 0 评论 -
【剑指offer-08】旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。题目解析【分析】1、当数组为空或者为null时返回-1定义两个指针start、end分别指向数组的第一个和最后一个值,把start赋值给mid(指向数组的中间值),统一返回mid位置处的值2、当数组只有一个值时,mid位置处的值就是最小值3、当nums[start] &原创 2020-09-01 18:55:07 · 105 阅读 · 0 评论 -
【剑指offer-04】替换空格
题目描述:请实现一个函数,把字符串中的每个空格替换成"%20"。实现方式:字符串是不可变的,所以说不能直接修改字符串中的字符,通过创建StringBuilder来实现。原创 2020-07-23 22:35:04 · 139 阅读 · 0 评论 -
【剑指offer-05】从尾到头打印链表
题目描述:输入一个链表的头节点,从尾到头反过来打印出每个节点的值。原创 2020-07-27 22:54:14 · 166 阅读 · 0 评论 -
【剑指offer-07】用两个栈实现队列
题目描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )题目解析【分析】首先定义栈stack1插入数据、stack2删除数据,删除前判断,如果stack2为空、stack1不为空,则把stack1中的元素出栈压入stack2,然后把stack2中的元素直接出栈就可以【代码实现】class CQueue { Sta原创 2020-08-29 16:02:31 · 120 阅读 · 0 评论 -
【剑指offer-29】数组中出现超过一半的数
题目描述给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。三种解法:常规思路、排序法、摩尔投票法原创 2020-08-07 19:37:19 · 171 阅读 · 0 评论 -
【剑指offer-03】二维数组中的查找
在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。原创 2020-08-09 16:25:04 · 151 阅读 · 0 评论