![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
TYUT_xiaoming
计算机视觉/深度学习(DL/CV)
展开
-
剑指 Offer 62. 圆圈中最后剩下的数字
0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。 示例 1: 输入: n = 5, m = 3 输出:3 示例 2: 输入: n = 10, m = 17 输出:2 解题: 思路 由题目可知,每次删除一个元素之后,我们需要从下一个元素重新编号,并且我们的编号是成环...原创 2020-10-11 21:14:53 · 144 阅读 · 0 评论 -
DP问题——最长上升子序列
https://zhuanlan.zhihu.com/p/46154210 1.题目描述 给定一个无序的整数数组,找到其中最长上升子序列的长度。 示例 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。 2.题目分析 状态转移方程 一道很明显的动态规划问题,首先分析状态转移方程。位置i所组成的最长上升子序列长度为在它之前比它小的所有数字的最长上升子序列长度集合的最大值。 dp[i] = 1 + max(dp[原创 2020-07-14 09:13:38 · 315 阅读 · 0 评论 -
快速找到未知长度单链表的中间结点
高级方法转载 2020-04-03 21:19:59 · 238 阅读 · 0 评论 -
约瑟夫环问题
建立一个循环链表 C代码原创 2020-04-03 20:36:46 · 225 阅读 · 0 评论 -
面试题21. 调整数组顺序使奇数位于偶数前面
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。 示例: 输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/diao-zheng-shu-zu-shun-xu-...转载 2020-04-03 10:20:32 · 130 阅读 · 0 评论 -
面试题18. 删除链表的节点
给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。 返回删除后的链表的头节点。 示例 1: 输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9. 思路:使用双指针完成,定位节点、修改指针指向 C++代码 /...原创 2020-04-03 08:48:33 · 249 阅读 · 0 评论 -
面试题24. 反转链表
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 思路 双指针 定义两个指针: preprepre 和 curcurcur ;preprepre 在前 curcurcur 在后。 每次让 pre...原创 2020-04-02 17:39:20 · 163 阅读 · 0 评论 -
面试题09. 用两个栈实现队列
用两个栈实现一个队列。 队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) class CQueue { public: CQueue() { } void appendTail(int value) { ...原创 2020-04-02 15:21:22 · 167 阅读 · 0 评论 -
面试题40. 最小的k个数
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。 示例 1: 输入:arr = [3,2,1], k = 2 输出:[1,2] 或者 [2,1] 示例 2: 输入:arr = [0,1,2,1], k = 1 输出:[0] C++ 代码 class Solution { public: ...原创 2020-04-02 12:29:26 · 146 阅读 · 0 评论 -
面试题05. 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." C++代码 class Solution { public: string replaceSpace(string s) { string res; for(int i = 0;...原创 2020-04-02 11:36:57 · 116 阅读 · 0 评论 -
面试题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-02 10:39:11 · 144 阅读 · 0 评论