![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer(C语言)专栏
用C语言刷剑指offer
2020程序员养成中
这个作者很懒,什么都没留下…
展开
-
剑指offer(C语言)60-68
#include <stdio.h>#include <stdlib.h>#include <string.h>#define bool unsigned int#define true 1#define false -1#define none 2int compare(const void* arg1,const void* arg2){...原创 2020-04-15 09:24:28 · 518 阅读 · 0 评论 -
剑指offer(C语言)51-60
51 数组中的逆序对题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。例如,在数组{7,5,6,4}中,一共存在5个逆序对,分别是(7,6)(7,5)(7,4)(6,4)和(5,4)思路:没想明白52 两个链表的第一个公共节点题目:输入两个链表,找出它们的第一个公共节点。...原创 2020-04-07 21:25:22 · 653 阅读 · 0 评论 -
剑指offer(C语言)41-50
PS:有些题是怎么降低一些本身很简单的题的时间复杂度,空间复杂度,对我而言没什么意义,也不是搞算法的。就选择性略过了41 数组流中的中位数题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。思路:最直观的就是排序,排序的时间复杂度是O(nlogN),寻找...原创 2020-04-04 15:33:58 · 325 阅读 · 0 评论 -
剑指offer(C语言)31-40
31 栈的压入、弹出序列题目:输入两个整数序列。第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列{1,2,3,4,5}是某栈的压栈序列,序列{4,5,3,2,1}是该压栈序列对应的一个弹出序列,但{4,3,5,1,2}就不可能是该压栈序列的弹出序列。思路:先将一下我自己的思路,入栈序列有多少个数就循环多少次,然后每次先入栈一个数,之后...原创 2020-03-29 08:41:34 · 393 阅读 · 0 评论 -
剑指offer(C语言)22-30
22 链表中倒数第k个节点题目:输入一个链表,输出该链表倒数第k个节点。为了符合多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,他们的值依次是1 2 3 4 5 6.这个链表的倒数第3个节点是只为4的节点。思路:由于是单向链表,只有指向下一个的指针,没有指向上一个的指针。第一想法是先遍历链表,查出一共有n个节点,再遍历链表,找到第n-k+...原创 2020-03-21 20:13:47 · 482 阅读 · 1 评论 -
剑指offer(C语言)11-21
未完待续11 旋转数组的最小数字题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1.思路:常规思路很简单,从头找比第一个小的就行。时间复杂度为O(n).如何能让时间复杂度更小一点。其实这种题很容易就会想到分治,也就是二分查找。...原创 2020-03-06 20:04:34 · 703 阅读 · 0 评论 -
剑指offer(C语言)3-10
面试题3-1 数组中重复的数字在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3}那么对应输出是1或者3思路:方法有很多,比如说先排序。但是完全可以在时间复杂度为O(N),空间复杂度是O(1)的条件下实现。如果没有重复的 ...原创 2020-03-06 10:50:48 · 1564 阅读 · 2 评论