剑指Offer面试题:12.在O(1)时间删除链表结点
一、题目:在O(1)时间删除链表结点 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 原文采用的是C/C++,这里采用C#,节点定义如下: public class Node<T> { //...
一、题目:在O(1)时间删除链表结点 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 原文采用的是C/C++,这里采用C#,节点定义如下: public class Node<T> { //...
数据结构是我们软件开发中最基础的部分了,它体现着我们编程的内功。大多数人在正儿八经学习数据结构的时候估计是在大学计算机课上,而在实际项目开发中,反而感觉到用得不多。 其实也不是真的用得少,只不过我们在使用的时候被很多高级语言和框架组件封装好...
说来惭愧,自己在毕业之前就该好好看看《剑指Offer》这本书的,但是各种原因就是没看,也因此错过了很多机会,后悔莫及。但是后悔是没用的,现在趁还有余力,把这本书好好看一遍,并通过C#通通实现一遍,并记录在我的博客中,作为学习笔记。 一、题目...
一、题目:二叉搜索树的后序遍历序列 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。 例如在下面的一颗二叉搜索树中,输入数组{5,7...
一、使用指针传出分解后的数字 实现一个方法“多个返回值”的效果:返回一个三位数数字的个位、十位、百位。这里,我们借助指针来”返回“分解后的结果。这种应用也是最常见的指针应用。 // fun...
一、题目:打印1到最大的n位数 题目:输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。 二、不同的解法 2.1 不假思索的解法 最容易想到的办法是先求出最大的n位数,然后用一个循...
一、题目:丑数 题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。求按从小到大的顺序的第1500个丑数。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做第一个丑数。 二、两种解决方案 2.1 一一遍...
排序(Sorting)是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为按关键字“有序”的记录序列。如何进行排序,特别是高效率地进行排序时计算机工作者学习和研究的重要课题之一...
一、题目:从上到下打印二叉树 题目:从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。例如输入下图中的二叉树,则依次打印出8、6、10、5、7、9、11。 二叉树节点的定义如下,采用C#语言描述: public cla...
一、使用sizeof计算数组长度 1.1 sizeof的基本使用 如果在作用域内,变量以数组形式声明,则可以使用sizeof求数组大小,下面一段代码展示了如何使用sizeof: int nums[] = {11,22,33,44,55,...