剑指offer
沉迷单车的追风少年
CSDN博客专家,CSDN商业化专家,官方内容合作伙伴,官方认证“人工智能领域优质创作者”,入选2023年中国开发者影响力年度榜单。
代表专栏《Diffusion Models与深度学习》、《手把手写深度学习》、《深度学习-计算机视觉》、《手把手写C++服务器》等。
展开
-
剑指offer——约瑟夫环问题
前几天华为机试做到类似题,当时并不知道,用数组强行模拟然后挂掉看来还是要多读书,闭门造车是不行的!用链表或者数组模拟是不行的!得用公式求解:f(N,M)=(f(N−1,M)+M)%N这个公式咋来的,我看到另一篇很好的博客,直接拿来了:https://blog.csdn.net/u011500062/article/details/72855826约瑟夫环是一个经典的数...原创 2020-03-30 10:24:42 · 270 阅读 · 0 评论 -
剑指offer——调整数组顺序使奇数位于偶数前面(快排变形)
目录题目:常规做法:使用较多额外空间,不足以拿offer双指针法:借鉴快排思想,不使用额外空间,完美题目:常规做法:使用较多额外空间,不足以拿offerclass Solution {public: vector<int> exchange(vector<int>& nums) { //常规思路,需要占用较...原创 2020-03-26 11:33:35 · 330 阅读 · 0 评论 -
剑指offer——打印从1到最大的n位数
先看LeetCode上的:居然能ACclass Solution {public: vector<int> printNumbers(int n) { vector<int> v; if(n<=0) return v; int max = pow(10,n)-1; ...原创 2020-03-19 18:07:35 · 195 阅读 · 0 评论 -
剑指offer——四种方法解链表相交
目录LeetCode面试题02.07.链表相交思路一:暴力解法思路二:栈思路三:长链表先走思路四:双指针LeetCode面试题02.07.链表相交看图,相交是这个意思:思路一:暴力解法面试要是这么写就挂了……思路二:栈因为链表只能从前到后进行遍历,而如果两个链表会相交的话,从后面倒数n个都会是相同的 这种先入后出的形式明显是栈 以空间换取...原创 2020-03-16 17:02:17 · 261 阅读 · 0 评论 -
剑指offer——三步走法原地修改解复制复杂链表
用哈希表不是最佳答案,最好的方法是原地修改法:复制一个新的节点在原有节点之后,如 1 -> 2 -> 3 -> null 复制完就是 1 -> 1 -> 2 -> 2 -> 3 - > 3 -> null 从头开始遍历链表,通过 cur.next.random = cur.random.next 可以将复制节点的随机指针串起来,当然需要判...原创 2020-03-14 10:42:50 · 235 阅读 · 0 评论 -
剑指offer——四指针解链表反转
题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL使用四指针来处理当前节点前一节点后一节点反转后的头节点(其实用可以化简)一张图说清![在这里插入图片描述](https://imgconvert...原创 2020-03-13 22:11:40 · 236 阅读 · 0 评论 -
剑指offer——6.从头到尾打印链表的三种解法
目录方法一:修改链表结构,将节点的指针反转方法二: 栈/reverse方法三:递归方法一:修改链表结构,将节点的指针反转一般打印操作不要修改原结构,抛弃此方法方法二: 栈/reverse这种先入后出的结构当然会想到栈stack 此处要返回vector,所以用C++库函数reverse更方便/*** struct ListNode {* int v...原创 2020-03-13 21:02:53 · 237 阅读 · 0 评论