
剑指offer
Heart of Ocean
正在学习java的小白
展开
-
专题二:贪心算法问题整理(Leetcode例题及解题思路)
1.LeetCode455. 分发饼干题目: 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这...原创 2020-04-14 17:07:43 · 1722 阅读 · 0 评论 -
专题一:双指针问题整理(Leetcode例题及解题思路)
双指针解题思路如下图:1、首尾双指针(1)LeetCode167. 两数之和 II - 输入有序数组题目要求: 给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。 说明: 返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个...原创 2020-04-08 21:03:37 · 1207 阅读 · 0 评论 -
剑指offer(25)——合并两个排序的链表
题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4限制: 0 <= 链表长度 <= 1000思路: 分离双指针; 引入伪头节点: 由于初始状态合并链表中无节点,因此循环第一轮时无法将节点...原创 2020-04-08 20:52:22 · 168 阅读 · 0 评论 -
剑指offer(22)—— 链表中倒数第k个节点
题目: 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5.思路: 构...原创 2020-04-07 00:34:14 · 162 阅读 · 0 评论 -
剑指offer(21)—— 调整数组顺序使奇数位于偶数前面
题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 示例: 输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。提示: 1 <= nums.length <= 50000 1 <= nums[i] <= 1000...原创 2020-04-06 23:55:08 · 174 阅读 · 0 评论 -
剑指Offer—(3)二维数组中的查找
1.题目描述:在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14,...原创 2020-03-31 23:19:05 · 197 阅读 · 0 评论 -
剑指Offer——(15)二进制中的一个数
题目:请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。示例 :输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。思路:主要考察位移运...原创 2020-03-31 22:58:41 · 134 阅读 · 0 评论 -
剑指Offer——(14)剪绳子
题目:给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m] 。请问 k[0]k[1]…*k[m] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 =...原创 2020-03-31 22:58:15 · 106 阅读 · 0 评论 -
剑指Offer——(11)旋转数组的最小数字
题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0思路寻找旋转数组的最小元素即为寻找 右排序数组 的首个元素 nu...原创 2020-03-31 22:57:58 · 119 阅读 · 0 评论 -
剑指Offer——(7)从尾到头打印链表
题目输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000思路:借助栈来实现。栈的特点是后进先出,即最后压入栈的元素最先弹出。考虑到栈的这一特点,使用栈将链表元素顺序倒置。从链表的头节点开始,依次将每个节点压入栈内,然后依次弹出栈内的元素并存储到数组...原创 2020-03-31 22:57:06 · 94 阅读 · 0 评论 -
剑指Offer——(6)重建二叉树
题目输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7限制:0 <= 节点个数 <...原创 2020-03-31 22:55:48 · 140 阅读 · 0 评论 -
剑指Offer——(10)青蛙跳台阶问题
题目一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21提示:0 <= n <= 100思路:(1)设跳上 n 级台阶有 f(n) 种跳法。在所有...原创 2020-03-31 21:20:33 · 269 阅读 · 0 评论 -
剑指Offer——(9)斐波那契数列
题目写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008...原创 2020-03-31 21:19:28 · 168 阅读 · 0 评论