
剑指Offer
文章平均质量分 58
乐易粒
记录.
展开
-
Python3——剑指Offer 21.调整数组顺序使奇数位于偶数前面
一.题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。提示:1.0 <= nums.length <= 500002.0 <= nums[i] <= 10000二、解法方法一:双指针class Solution: def exchange(self, nums: List原创 2022-05-14 17:20:31 · 335 阅读 · 0 评论 -
Python3——剑指Offer 15.二进制中1的个数
一、题目描述题目来自剑指Offer 15,难度简单。编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。示例1输入:n = 11 (控制台输入 00000000000000000000000000001011)输出:3解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。示例2输入:n = 128 (控制台输入 000000000000000000原创 2022-03-20 17:45:14 · 1002 阅读 · 0 评论 -
Python3——剑指Offer 11.旋转数组的最小数字
一、题目描述题目来自剑指Offer 11,难度简单。把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [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二、题目解析这道题目我的第一想法就原创 2022-03-19 13:48:27 · 392 阅读 · 0 评论 -
Python3——剑指Offer 14-II.剪绳子
一、题目描述题目来自剑指Offer 14-II.,难度中等。给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m - 1] 。请问 k[0]k[1]…*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例1原创 2022-03-18 12:36:28 · 272 阅读 · 0 评论 -
Python3——剑指Offer 14-I. 剪绳子
一、题目描述题目来自剑指Offer 14-I ,难度简单。给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例2:输入: 10输出: 36原创 2022-03-17 15:24:27 · 323 阅读 · 0 评论 -
Python3——青蛙跳台阶问题
一、题目描述题目来自剑指Offer 10-II,难度简单。一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1提示:0 <= n <= 100二、题目解析我们先来模拟下青蛙跳台阶的过程。当台阶数n=0时,青蛙原创 2022-03-16 17:42:46 · 4388 阅读 · 0 评论 -
Python3——斐波那契数列
一、题目描述题目来自剑指Offer 10-I.难度简单。写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(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 =原创 2022-03-16 17:09:30 · 6340 阅读 · 0 评论 -
Python3——用两个栈实现队列
一、题目描述题目来自剑指Offer 09,难度简单。用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例1:输入:[ “CQueue” , “appendTail” , “deleteHead” , “deleteHead” ][ [] , [3] , [] , [] ]输出:[null,null,3,-1]示例2原创 2022-03-15 15:35:13 · 610 阅读 · 0 评论 -
Python3——从尾到头打印链表
一、题目描述题目来自剑指Offer 06,难度简单。输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例1:输入:head = [1,3,2]输出:[2,3,1]限制:0 <= 链表长度 <= 10000二、题目解析方法一:辅助栈法在Python中,遍历一个链表的时候,将量表中的值依次放入到一个列表list中,遍历结束后,翻转列表list输出即可。方法二:递归法利用递归将头结点移动到末端,然后回溯,一次将节点的值存储到列表中,即可实现链表中的值倒序原创 2022-03-14 17:10:27 · 1608 阅读 · 0 评论 -
Python3——替换空格
一、题目描述题目来自剑指Offer 05,难度简单。请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1 :输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000二、题目解析遍历数组:先定义一个列表res。用for循环遍历字符串s,当前字符为i,若i为空格" “,则res.append(”%20");否则,说明不是空格,直接将当前字符拼接在列表后即可,res.append(i原创 2022-03-13 14:51:48 · 2565 阅读 · 0 评论 -
Python3——数组中的重复数字
一、题目描述找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。二、题目解析Python中的集合set是一个无序的不重复元素序列。在长度为n的数组中,所有数字的都在0~n-1的范围内,可以通过循环数组,判断当前的数字是否已经存储在集合set中,那么会有三种情况:当前数字已经存储在集合set中,说明是重复数字,则返回当前数字;当前数字没原创 2022-03-12 23:25:56 · 4371 阅读 · 0 评论