摘要:
题目:假设一个单调递增的数组里的每个元素都是整数并且是唯一的。请找出数组中任意一个数值等于其下标的元素。 注:使用二分查找,当中间的数和索引相同时,返回值,结束;当中间值小于索引时,begin指向中间值+1;当中间值大于索引时,end指向中间值-1。 阅读全文
摘要:
题目:一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 注:使用二分查找的方式,如果中间的数与索引相同,说明缺失的数字在右边,让begin指向这个位置;如果中间的数与索引不相同,说明 阅读全文
摘要:
题目:数字在排序数组中出现的次数。输入为一个排序数组和一个数字。 注:一般解决方式为利用字典统计各个数字出现的次数或者用二分法查找到其中一个目标数字,然后前后再前后查找。这两种方式的时间复杂度都为O(n)。 O(lgn)的方法为使用两次二分查找,第一次查找目标数字第一次出现的位置,第二次查找其最后一 阅读全文
摘要:
题目:输入两个链表,找出它们的第一个公共节点。 注:要找出两个链表第一个公共节点,只要让两个链表在各自某个节点之后长度一致,然后一起往后遍历,当遇到两个节点相同时,即为第一个公共节点。所以首先算出两个链表的长度,然后让长的链表先走,使其剩余长度等于另一个链表,然后一起遍历即可。 第二种方法为用两个栈 阅读全文
摘要:
题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对。 注:官方给的方法是利用归并排序,时间复杂度为O(nlgn)。本文给出自己的方法,时间复杂度为O(n2),有待改进,但是实现很简洁。先对数组排序,利用内置的排序函数。然后依次遍 阅读全文
摘要:
一、并发、并行、同步、异步、阻塞、非阻塞 并发:指一个时间段内,有几个程序在同一个CPU上运行,但是任意时刻只有一个程序在CPU上运行 并行:指任意时刻点上,有多个程序同时运行在多个CPU上 同步:指代码调用IO操作时,必须等待IO操作完成才能返回的调用方式。 异步:指代码调用IO操作时,不必等IO 阅读全文