摘要:
常用排序算法 我们通常说的排序都是内部排序,就是数据在内存中进行排序 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 另一种是非比较排序,时间复杂度可以达到O(n),主要有:计数排序,基数排序,桶排序等。 特殊记法: 阅读全文
摘要:
输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 两种思路:递归和非递归 先说递归吧, // 先判断两个链表指针是否为空,如果链表一为空,则返回第二个// 如果链表二为空,则返回第一个.如果都是空,合并后也是空//两个链表都是有序的,遍历链表,判断当前指针 阅读全文
摘要:
输入一个链表,反转链表后,输出新链表的表头。 注意这里是没有头结点的(就是pHead指向的是第一个元素的地址) 思路: //利用两个指针Pcur指向当前,PNew执行要返回的,和一个中间指针变量保存当前结点的下一个结点//我们需要从第二个节点开始遍历,将当前节点的 next 指向前一个节点。//这里 阅读全文
摘要:
输入一个链表,输出该链表中倒数第k个结点。 思路一:先遍历整个链表,统计链表的个数,然后总个数-k就是所求的结果 但是太无脑了 所以思路二: 用两个指针, first 和 second first先走k-1次,然后second再走,当first 到最后一个,second就是所求的了 代码: // 两 阅读全文
摘要:
堆排序 是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。 首先简单了解下堆结构。 堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆; 或者每个结点的值都小于或等于其左右孩子结 阅读全文
摘要:
计算机网络常见面试题总结 // 参考博客 https://www.cnblogs.com/midiyu/p/7897086.html 强烈推荐去看这篇帖子,超鸡好哦!! https://www.nowcoder.com/discuss/1937 1:简述TCP/UDP的区别 TCP和UDP是OSI模 阅读全文
摘要:
这个问题也是困扰了我很久的一个问题: 为了加快数据存取的速度,编译器默认情况下会对结构体成员和结构体本身存储位置进行处理,使其存放的起始地址是一定字节数的倍数,而不是顺序存放,称为字节对齐. 设对齐字节数为n(n = 1,2,4,8,16),每个成员内存长度为Li,Max(Li)为最大的成员内存长度 阅读全文
摘要:
这是在网上见到的一道腾讯面试题 先说结论: 1. 计时的情况下需要比赛8轮; 2.不计时的情况下最少需要10轮,最多需要11轮。 1 用秒表计时的话,64匹分8组。 8轮就出来了 2:不能计时的情况下 先说下思路: 一:把64匹马分8组,各跑一次,然后淘汰掉每组的后四名,这里淘汰后四名是因为只需要跑 阅读全文
摘要:
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 思路1: 利用数组模拟哈希,将字符转化为整数(字符-0) (计算ascii) 将每个字符转换为数字,作为数组的下标,值为出现的次数 第一次遍历统计次 阅读全文
摘要:
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。 对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。 例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! 思路 阅读全文