随笔分类 - 剑指Offer
摘要:问题描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 分析 方法一 层与层之间用NULL分隔 5 / \ 3 7 / \ / \ 2 4 6 8 队列中元素变化 5# #37 37# 7#24 #2468 2468 vector<vector<int> > Print(Tree
阅读全文
摘要:问题描述 输入一个链表,输出该链表中倒数第k个结点。 分析 使用快慢指针法 初始slow指针指向头节点,fast指针头节点后k-1个节点,两个指针都向后移动,直到fast到达链表尾部 ListNode* FindKthToTail(ListNode* pListHead, unsigned int
阅读全文
摘要:问题描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE :给出的所有元素都大于0,若数组大小为0,请返回0 分析 思路
阅读全文
摘要:问题描述 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 保证base和exponent不同时为0 分析 计算$base^{exponent}$,正好最近在学密码学,想到了快速幂算法,可以减少乘法次数 $base^{1}$、 $base
阅读全文
摘要:问题描述 写一个函数,求两个整数之和,要求在函数体内不得使用+、 、 、/四则运算符号。 分析 使用位运算,计算机内部就是用门电路做运算的 可以看作是 无进位加法 可以用来计算进位,需要左移一位 Reference 1. "位运算加法 简书"
阅读全文
摘要:问题描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 分析 n = n & (n 1) 可以除去n的二进制位中最后一个1
阅读全文
摘要:问题描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 分析 链表只能顺序访问,但要求逆序地返回链表中的元素 遍历链表存到临时空间(栈或数组都行),再逆序输出到最终结果 反转链表,遍历链表到最终结果 临时空间 遍历链表,将数据插入栈,逆向遍历临时空间,将数据插入最终结果数组 C++
阅读全文
摘要:问题描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 分析 乍一看不就一个replace解决问题,的确这样是能AC的 如下面这个C 版的,一行就能解决 如果不用自带的replace偷懒
阅读全文
摘要:问题描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 分析 抛开二维数组的有序性质,直接遍历二维数组找是否含有一个数,算法复杂度为$O(n^2)$ 考
阅读全文