这个题看似很简单: 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 当看到这个题目得到时候,我的第一反应是:考虑矩阵为空,只有一行,只有一列,以及一般情况m×n矩阵.这个思维很重要,让我们无法忽视很多的边界问题.!!!以后但凡是矩阵问题,首先需要考虑特殊矩阵. 其次,…
题目来源:剑指offer 题目: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 解题思路: 数组类题目指导原则:除了极其傻瓜式的题目,大部分数组类的题目都要用到 “双索引“策略,只不过有的采用对撞指针,有的采用跟随指针. 我们随便举出一个数组的例子,才分析怎么做才比较合适:2 4 7 4 3 5 8  10 9: 那么此时,你会怎么做,当然了,我们当然是需要找出所有的奇数,…
题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列.(注意:这两个序列的长度是相等的) 先上通过的代码: class Solution { public: bool IsPopOrder(vector<int> pushV,vector<int> popV) {…
题目如下: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写). 先上代码: class Solution { public: int FirstNotRepeatingChar(string str) { //冷静的思考这个个题目,明显我们需要完整的遍历完整个字符串才可以 int length = str.size(); ) ; vector<,);//初始化所有字母的统计为0: ;i &…
题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 题目分析 首先我们需要把这个复杂的问题分解为简单的问题,打印矩阵也就是一圈一圈的打印出来,所以我们需要解决的问题就是: 1.什么时候该继续打印下一圈即里面那一圈,也就是要找到循环的条件. 2.一圈该如何打印. 那么什么是循环结束…
  题目描述:   输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.   解题思路:   由于是按照从外到内的顺序依次打印,所以可以把矩阵想象成若干个圈,用一个循环来打印矩阵,每次打印矩阵中的一圈.假设矩阵的行数是row,列数是col,则每次都是从左上角开始遍历,而我们注意到左…
机器人的运动范围 牛客网 剑指Offer 题目描述 地上有一个m行和n列的方格.一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子. 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18.但是,它不能进入方格(35,38),因为3+5+3+8 = 19.请问该机器人能够达到多少个格子? class Solution: def movingCount(self, threshold, ro…
数组中只出现过一次的数字 牛客网 剑指Offer 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次.请写程序找出这两个只出现一次的数字. def FindNumsAppearOnce(self, array): if array == None or len(array) <= 0: return [] resultExOr = self.ExOr(array) i = 0 while resultExOr and i <= 32: i += 1 resultExOr = r…
数组中出现次数超过一半的数字 牛客网 剑指Offer 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2.如果不存在则输出0. class Solution: #run:32ms memorry:5624k def MoreThanHalfNum_Solution(self,numbers): lenN = len(numbers) if numbe…
数据流中的中位数 牛客网 剑指Offer 题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值.我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数 class Solution: def __init__(self): self.left = [] self.right = [] self.count = 0 d…