剑指offer刷题总结
失去的都是人生
天道酬勤
展开
-
算法题小结
20. 表示数值的字符串**程序写的很好有固定的模板,先是【正负号】【数字】【.】【数字】【e】【正负号】【数字】,其中正负号可以省略。程序思路,输入字符串判断正负号判断数字如果有点,判断后面是否是数字(.前后可以没有数字)如果是e,判断是否有数字(e前后必须跟数字)21. 调整数组顺序使奇数位于偶数前面**程序号快速排序,两个指针,一前一后,查到就交换,也可以用我总结的排序方法里的快速排序实现。...原创 2018-04-08 19:52:27 · 139 阅读 · 0 评论 -
旋转数组的最小数
声明:题目、程序来自《剑指offer》,注释、分析为自己所写备忘,侵删打算把剑指offer上的题整理一下,发上来备忘。题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组{3, 4, 5, 1, 2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 分析:数组中存储的是...原创 2018-04-03 09:25:03 · 113 阅读 · 0 评论 -
矩阵中的路径
声明:题目、程序来自《剑指offer》,注释、分析为自己备忘,侵删 题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在一下面的3x4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用下划线标出)。但矩阵中不包含字...原创 2018-04-03 11:05:48 · 249 阅读 · 0 评论 -
机器人的运动范围
声明:题目、程序来自《剑指offer》,注释、分析为自己写下备忘,侵删递归(回溯) 题目:地上有一个m行n列的方格。一个机器人从坐标((0, 0)的格子开始移动,它每次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(35; 37)}因为3十5+3+7=18。但它不进入方格(35, 38),因为3+5+3+8=19}...原创 2018-04-03 14:26:40 · 157 阅读 · 0 评论 -
剪绳子
声明:题目和程序来自《剑指offer》,注释和分析为自己所写备忘,侵删。动态规划题目:给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0] x k[1] x… x k[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2, 3, 3的三段,此时得到的最大乘积是18。分析:动...原创 2018-04-03 16:41:25 · 307 阅读 · 0 评论 -
二进制中1的个数
位运算 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如,把9表示成二进制是1001,有2位是1因此,如果输入9,则该函数输出2。 分析:tips:负数在移位后仍为负数,最高位为1,1移位后,最高位的符号位仍为1。数字右移,判断第一位为1的个数,直到数变为零,类似于十进制转二进制的数学算法,但不适用于负数。修改为,把1左移,每次判断一位,直到1变成0。代码如下:int...原创 2018-04-03 18:38:59 · 129 阅读 · 0 评论 -
《剑指offer》67.机器人的运动范围
题目:地上有个m行n列的方格。一个机器人从坐标(0,0)的格子开始移动,它每一次可以向左、右、上、下移动一格,但不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7=18.但它不能进入方格(35,38),因为3+5+3+8=19.请问该机器人能够达到多少格子?思路:实现代码:#include <iostream> vo...原创 2018-05-16 10:44:43 · 172 阅读 · 0 评论 -
《剑指offer》66:矩阵中的路径
题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵任意一格开始,每一步可以在矩阵中向上下左右移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如在下面的3*4矩阵中包含一条字符串‘`bcced',的路径(路径中的字母用斜体表示)。但矩阵中不包含字符串“abcd”的路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,...原创 2018-06-27 15:55:10 · 132 阅读 · 0 评论 -
《剑指offer》65:滑动窗口的最大值
题目:给定一个数组和滑动窗日的大小,请找出所有滑动窗口里的最大值。如果输入数组{2,3,4,2,6,2,5,1}及滑动窗印的大小3,那么存在6个滑动窗口,它们的最大值分别为{4,4,6,6,6,5}。第一想法是按窗口滑动,每次对比窗口内的数字大小,选出最大值,但很明显,这里存在着很多次重复的大小对比操作,将那些重复的操作想办法剪去即可。#include<iostream> #inclu...原创 2018-07-03 21:27:00 · 177 阅读 · 0 评论