![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
崔楠
Do not lose heart, you will be successful sooner or later.
展开
-
剑指offer:剪绳子
。。。原创 2020-02-10 14:51:43 · 124 阅读 · 0 评论 -
剑指offer:机器人的运动范围
题目:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?int movingCount(int thr...原创 2020-02-10 11:06:42 · 86 阅读 · 0 评论 -
剑指offer:矩阵中的路径
题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了...原创 2020-02-09 21:11:40 · 65 阅读 · 0 评论 -
剑指offer:滑动窗口的最大值
**题目:**给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2...原创 2020-02-06 18:02:02 · 72 阅读 · 0 评论 -
剑指offer:表示数值的字符串
题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。这个题挺简单的。就按这个规则写就行了。#include<iostream>#include<string>usi...原创 2020-01-13 10:25:58 · 53 阅读 · 0 评论 -
剑指offer:正则表达式匹配
题目描述请实现一个函数用来匹配包括 . 和 ※ 的正则表达式。模式中的字符’.'表示任意一个字符,而※表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配。用递归的思路还是挺好理解的:分为两种情况:1.该字符后面不是※。那对应位置必须得匹配。否则返回...原创 2020-01-13 10:23:23 · 108 阅读 · 0 评论 -
剑指offer:构建乘积数组
题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。vector<int> multiply(const vector<int>& A){}思路:如图,先挨个计算下三角,然后再倒着计算上三角。#include<io...原创 2020-01-13 10:12:00 · 74 阅读 · 0 评论 -
剑指offer:数组中重复的数字
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 // Parameters: // numbers: an array of int...原创 2020-01-13 10:01:36 · 52 阅读 · 0 评论 -
剑指offer:平衡二叉树
题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树。struct TreeNode { int val; struct TreeNode* left; struct TreeNode* right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }}bool IsBalanced_Solution(TreeNode*...原创 2019-12-03 22:13:42 · 82 阅读 · 0 评论 -
剑指offer:数组中的逆序对
题目描述:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007int InversePairs(vector<int> data) {}这个题用暴力的方法时间复杂度太高,采用分治的方法来解。先求出左半部分逆序对的数量c1再求出右...原创 2019-12-03 21:41:03 · 49 阅读 · 0 评论 -
剑指offer:第一个只出现一次的字符
题目描述:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).解题思路: 可以先遍历一边字符串,将每个字符以及其出现的次数存入到map或者unordered_map中去(当然unordered_map的查询时间快,但需要的存储空间较大)。随后再遍历一边字符串,对于每个字符,去map中进...原创 2019-12-03 21:18:50 · 50 阅读 · 0 评论 -
剑指offer:两个链表得第一个公共节点
题目:输入两个链表,找出它们的第一个公共结点。什么是公共节点:两个链表公用的节点,也就是这个节点既出现在这个链表也出现在另一个链表。这就有一个性质了,那就算这个公用节点之后的节点都是共同使用的。1.暴力方法...原创 2019-12-03 09:01:05 · 237 阅读 · 0 评论 -
剑指offer:数组中只出现一次的数字
题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 void FindNumsAppearOnce(vector<int> data,int* num1,int *num2) {}解题思路:1. 暴力方法暴力方法就简单说说吧,人人都能想到,复杂度有点高。用到了count()标准库函数,对数组每一个元素进行count()查...原创 2019-12-03 08:45:40 · 51 阅读 · 0 评论 -
剑指offer:把数组排成最小的数
剑指offer:把数组排成最小的数题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。暴力方法明知道暴力方法是0分答案但还是要写一下,因为这个暴力方法隐含了一个题就是:得到某一个集合所有可能的组合。我利用的是 回溯 的方法#include<iostr...原创 2019-11-28 09:45:11 · 68 阅读 · 0 评论 -
剑指offer:连续子数组的最大和
剑指offer:连续子数组的最大和题目描述:HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)...原创 2019-11-28 09:32:31 · 67 阅读 · 0 评论 -
剑指offer:最小的K个数
hello world按照搞计算机的惯例,刚接触的东西都要先写个hello world,所以我这儿就以hello world为标题了。这是我第一次写博客,想要通过博客记录我学习的东西。初次与大家见面,今后还请多多指教。剑指offer:最小的K个数题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。这也不算是哪个类型...原创 2019-11-26 23:24:31 · 146 阅读 · 0 评论