剑指offer全通关记录
剑指offer全通关记录
JZ12 数值的整数次方
首先对负数的处理,可以处理成
当n为偶数时候,可以处理成,
当n为奇数时候,可以处理成,
JZ15 反转链表
指针cur表示待翻转结点,pre表示待翻转结点的前一个结点,next表示待翻转结点的下一个结点。当cur不为空,不断循环cur.next=pre把当前结点下一个变成上一个结点就行了.
JZ27 字符串的排列
这一题感觉直接深搜是最方便的了,值得注意的是要判断空字符串返回。而且要确保答案不能出现重复字符串,这是个坑。
JZ29 最小的K个数
采用排序算法做,但是不能硬排选取最小的k个,可以选择堆排序这种较快的算法,小顶堆每一趟可以确定最大的数,我们只用排序k躺,不用全部排完。
JZ30 连续子数组的最大和
这题是很典型的动态规划,作者为了便于理解还是采用了空间复杂度O(n)的解法,动态规划三部曲
确定状态数组的含义。dp[i]表示以array[i]结尾的连续子数组的最大和
状态转移方程。
边界赋初值。当i=0时候需要我们手动赋初值,以array[0]结尾的连续子数组最大和很明显是他本身.dp[0]=array[0]
JZ31 整数中1出现的次数
这题比较简单,把数字每一位取出来就行了,对一个数字模10就是该数字最后一位,然后把该数字变成整除10继续