摘要:
1定义 单链表node的数据结构定义如下: 2 方法1:就地反转法 2.1 思路 把当前链表的下一个节点pCur插入到头结点dummy的下一个节点中,就地反转。 dummy->1->2->3->4->5的就地反转过程: 2.2 解释 1初始状态 2 过程 pCur是需要反转的节点。 伪代码 3 循环 阅读全文
摘要:
合并两个有序的单链表,合并之后的链表依然有序: 这道题经常被各公司考察。 例如: 链表1: 1->2->3->4 链表2: 2->3->4->5 合并后: 1->2->2->3->3->4->4->5 解题思路: 挨着比较链表1和链表2。 这个类似于归并排序。尤其要注意两个链表都为空、和其中一个为空 阅读全文
摘要:
题目分析: 链表的特点就是有很多的节点,每个节点有数据域和指针域两部分,指针域存放的是下一个节点的地址,根据地址找到下一个节点。链表只能从前到后遍历,不能从后到前遍历。 对于这个问题,我们首先能够想到的就是先遍历一遍整个的链表,然后计算出链表的长度,进而遍历第二遍找出中间位置的数据。这种方式非常简单 阅读全文
摘要:
普通思路:先将整个链表从头到尾遍历一次,计算出链表的长度size,得到链表的长度之后,就好办了,直接输出第(size-k)个节点就可以了(注意链表为空,k 为0,k为1,k大于链表中节点个数时的情况)。时间复杂度为O(n),大概思路如下: 如果面试官不允许你遍历链表的长度,该怎么做呢?接下来就是。 阅读全文
摘要:
注意检查链表是否为空。时间复杂度为O(n)。这个比较简单。 核心代码: 阅读全文
摘要:
运行结果: 0123456789 上方代码中,这里面的Node节点采用的是内部类来表示。使用内部类的最大好处是可以和外部类进行私有操作的互相访问。 注:内部类访问的特点是:内部类可以直接访问外部类的成员,包括私有;外部类要访问内部类的成员,必须先创建对象。 为了方便添加和遍历的操作,在LinkLis 阅读全文
摘要:
题目:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解析:如果从前往后替换字符串中的空格,则每次替换,都要把空格后的字符向后挪动相应的位置。这样,时间复杂度会很高。在此,我们可以换个思路,先 阅读全文
摘要:
题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上往下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 例如下面的二维数组就是每行、每列都是递增排序。如果在这个数组中查找数字7,则返回true,如果查找数组5,由于数组中不含有该 阅读全文
摘要:
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。 解法一:不修改数组找出 阅读全文
摘要:
从一个单线程的应用到一个多线程的应用并不仅仅带来好处,它也会有一些代价。不要仅仅为了使用多线程而使用多线程。而应该明确在使用多线程时能多来的好处比所付出的代价大的时候,才使用多线程。如果存在疑问,应该尝试测量一下应用程序的性能和响应能力,而不只是猜测。 设计更复杂 虽然有一些多线程应用程序比单线程的 阅读全文