Offer

剑指 Offer 10- I. 斐波那契数列

分析: 偷个懒,上次做的一样的题 代码: 1 class Solution(object): 2 def fib(self, n): 3 """ 4 :type n: int 5 :rtype: int 6 """ 7 if n<2: 8 return n 9 f=[0 for i in range ......
数列 Offer 10

【剑指 Offer】38. 字符串的排列

【题目】 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 示例:输入:s = "abc"输出:["abc","acb","bac","bca","cab","cba"]来源:力扣(LeetCode)链接:https://leetcode. ......
字符串 字符 Offer 38

【剑指 Offer】 37. 序列化二叉树

【题目】 请实现两个函数,分别用来序列化和反序列化二叉树。你需要设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。提示:输入输出格式与 LeetCode 目前使用的方式一致, ......
序列 Offer 37

分治算法:剑指 Offer 36. 二叉搜索树与双向链表

题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。 为了让您更好地理解问题,以下面的二叉搜索树为例: 我们希望将这个二叉搜索树转化为双向循环链表。链表中的每个节点都有一个前驱和后继指针。 对于双向循环链表,第一个节点的前 ......
双向 算法 Offer 36

【剑指 Offer】 59 - II. 队列的最大值

【题目】 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value 需要返回 -1示例 1:输入: ["MaxQueue","push ......
最大值 队列 Offer 59 II

【剑指 Offer】 59 - I. 滑动窗口的最大值

【题目】 给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 [1 3 -1] -3 5 3 6 7 3 1 [3 -1 - ......
最大值 Offer 59

剑指 Offer II 017. 含有所有字符的最短字符串

题目链接:剑指 Offer II 017. 含有所有字符的最短字符串 方法:同向双指针 解题思路 基本思路:统计 $t$ 字符串中每个字符的个数,然后使用双指针遍历字符串 $s$,当窗口覆盖 $t$ 中所有字符时,开始缩短左指针到可以到达的最右侧,取窗口最小的字符串为答案; 需要考虑的问题: 什么情 ......
字符 字符串 Offer 017 II

分治算法:剑指 Offer 25. 合并两个排序的链表

题目描述: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 限制: 0 <= 链表长度 <= 1000 解题思路: class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { Lis ......
算法 两个 Offer 25

剑指 Offer 55 - II. 平衡二叉树

剑指 Offer 55 - II. 平衡二叉树 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 tr ......
Offer 55 II

剑指 Offer 10- II. 青蛙跳台阶问题

分析: 因为好久没有练习思维还没有转变,所以这道题思考有点慢 首先还是建立状态,到达第i级台阶时,有f[i]种跳法 最后答案f[n-1] 再状态转移,f[i]=f[i-1]+f[i-2] 赋初值,因为可以选择跳一阶或者两阶,所以初始赋值f[0]和f[1],f[0]=1,f[1]=2 然后编写代码,但 ......
台阶 青蛙 问题 Offer 10

剑指 Offer II 088. 爬楼梯的最少成本

剑指 Offer II 088. 爬楼梯的最少成本 - 力扣(LeetCode) 代码: class Solution(object): def minCostClimbingStairs(self, cost): """ :type cost: List[int] :rtype: int """ ......
楼梯 成本 Offer 088 II

回溯算法:剑指 Offer 38. 字符串的排列

题目描述: 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。 限制: 1 <= s 的长度 <= 8 class Solution{ Set<String> res = new HashSet<>(); public String[] pe ......
字符串 算法 字符 Offer 38

剑指 Offer 33. 二叉搜索树的后序遍历序列(java解题)

leetcode《图解数据结构》剑指 Offer 33. 二叉搜索树的后序遍历序列(java解题)的解题思路和java代码,并附上java中常用数据结构的功能函数。 ......
序列 Offer java 33

从功能到外企测开,工作1年半拿下年薪30万的测开 offer,未来可期

说一下我的大致情况,女,2018年毕业于末流211计算机本科。后来待业两年,完全没有从事互联网方面的工作。去年来到北京,在小公司做了一年多功能测试。今年11月底跳槽到外企,开始了我钱多事少离家近,每周965的快乐生活,现在年薪30万左右。 降大任于斯人也,必先苦其心志 2014年,高考没有考好,为了 ......
年半 外企 年薪 功能 offer

剑指Offer——57.和为s的两个数字(c语言)

title: 剑指Offer 57.和为s的两个数字(c语言) 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。 示例1: 输入:nums = [2,7,11,15], target = 9 输出:[2,7] 或者 [7,2 ......
两个 语言 数字 Offer 57

剑指Offer——10-I.斐波那契数列(c语言)

title: 剑指Offer 10-I.斐波那契数列(c语言) 写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下: F(0) = 0, F(1) = 1 F(N) = F(N - 1) + F(N - 2), 其中 N > 1. 斐波那契数列由 0 和 ......
数列 语言 Offer 10

剑指Offer——59-I.滑动窗口的最大值(c语言)

title: 剑指Offer59-I.滑动窗口的最大值(c语言) 给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 示例: 输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解释: 滑动窗口的位置 最大值 ......
最大值 语言 Offer 59

剑指Offer——24.反转链表(c语言)

title: 剑指Offer 24.反转链表(c语言) 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 限制: $$ 0 \leqslant 节点个数 \leqslant ......
语言 Offer 24

剑指Offer——10-II.青蛙跳台阶问题(c语言)

title: 剑指Offer 10-II.青蛙跳台阶问题(c语言) 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例1: 输入:n = 2 ......
台阶 青蛙 语言 问题 Offer

剑指Offer——53-II. 0~n-1中缺失的数字(c语言)

title: 剑指Offer 53-II. 0~n-1中缺失的数字(c语言) 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 示例1: 输入: [0,1,3] 输出: 2 示例2: ......
缺失 语言 数字 Offer 53

剑指Offer——05.替换空格(c语言)

title: 剑指Offer 05.替换空格(c语言) 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例1: 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: $$ 0 \leqslant s的长度 \leqslant 10000 ......
空格 语言 Offer 05

剑指Offer——03.数组中重复的数字(c语言)

title: 剑指Offer 03.数组中重复的数字(c语言) 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例1: 输入: [2, ......
数组 语言 数字 Offer 03

剑指Offer 09.用两个栈实现队列(c语言)

title: 剑指Offer 09.用两个栈实现队列(c语言) 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例1: 输 ......
队列 两个 语言 Offer 09

剑指 Offer II 009. 乘积小于 K 的子数组

题目链接:剑指 Offer II 009. 乘积小于 K 的子数组 方法:同向双指针 解题思路 当 $[l, r]$ 子数组的乘积等于 $k$ 时,表明以 $l$ 为左端点且乘积为 $k$ 的子数组的数量为 $r - l + 1$,随着数组长度增加乘积一定增大($[l, r]$ 已经包含端点为 $1 ......
乘积 数组 Offer 009 II

剑指 Offer II 005. 单词长度的最大乘积

题目链接:剑指 Offer II 005. 单词长度的最大乘积 方法:转化为二进制位 + 位运算 解题思路 将 $words[i]$ 字符串中包含的字母转换为二进制位上的 $1$,字符 'a' 对应二进制中的第 $0$ 位上的 $1$,这样每个字符串就对应一个二进制数。 通过两个字符串的二进制数进行 ......
乘积 单词 长度 Offer 005

二分查找:剑指 Offer 53 - II. 0~n-1中缺失的数字

题目描述: 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。 在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 限制: 1 <= 数组长度 <= 10000 解题思路: 复杂度分析: 时间复杂度 O(logN): 二分法为对数级别 ......
缺失 数字 Offer 53 II

二分查找:剑指 Offer 53 - I. 在排序数组中查找数字 I

题目描述: 统计一个数字在排序数组中出现的次数。 提示: •0 <= nums.length <= 105 •-109 <= nums[i] <= 109 •nums 是一个非递减数组 •-109 <= target <= 109 解题思路:排序数组中的搜索问题,首先想到 二分法 解决。 排序数组 ......
数组 数字 Offer 53

剑指offer刷题 进度:JZ8

题目列表 https://www.nowcoder.com/ta/coding-interviews JZ3 数组中重复的数字 时间空间复杂度都为$O(n)$,直接建一个数组a,初始化全0,出现数i就a[i]++ int duplicate(vector<int>& numbers) { const ......
进度 offer JZ8 JZ

剑指offer53(Java)-在排序数组中查找数字(简单)

题目: 统计一个数字在排序数组中出现的次数。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2: 输入: nums = [5,7,7,8,8,10], target = 6输出: 0 提示: 0 <= nums.length <= 105 -1 ......
数组 数字 offer Java 53

二分查找:剑指 Offer 11. 旋转数组的最小数字

题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。 例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数 ......
数组 数字 Offer 11