剑指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 2 int compare(const void* arg1,const void* arg2) { ...原创 2020-04-15 09:24:28 · 592 阅读 · 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 · 799 阅读 · 0 评论 -
剑指offer(C语言)41-50
PS:有些题是怎么降低一些本身很简单的题的时间复杂度,空间复杂度,对我而言没什么意义,也不是搞算法的。就选择性略过了 41 数组流中的中位数 题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 思路:最直观的就是排序,排序的时间复杂度是O(nlogN),寻找...原创 2020-04-04 15:33:58 · 399 阅读 · 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 · 482 阅读 · 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 · 609 阅读 · 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 · 787 阅读 · 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 · 1700 阅读 · 2 评论
分享