剑指Offer
杨Alan
渣渣鹏
展开
-
剑指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...原创 2020-03-24 20:05:34 · 157 阅读 · 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]。不能使用除法。(注意:规定B[0]=A[0]×A[1]×…×A[n-2];)示例 1:输入: [1,2,3,4,5]输出: [120,60,40,30,24]示...原创 2020-03-24 18:19:57 · 122 阅读 · 0 评论 -
剑指Offer(五十):数组中重复的数字
数组中重复的数字:题目链接:牛客网题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。示例 1:输入: [2,3,1,0,2,5,3]输出: 2解题...原创 2020-03-24 17:50:22 · 180 阅读 · 0 评论 -
剑指Offer(四十):数组中只出现一次的数字
数组中只出现一次的数字:题目链接:牛客网题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。示例 1:输入: [1,2,1,3,2,5]输出: [3,5]解题思路:• (一):用利用哈希表的特性来解答• (二):利用异或: 现在数组中只有连个数字只出现过1次 a, b ,直接异或一次只能得到这两个数字的异或...原创 2020-03-24 13:59:10 · 149 阅读 · 0 评论 -
剑指Offer(三十七):数字在排序数组中出现的次数
数字在排序数组中出现的次数:题目链接:牛客网题目描述: 统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例 2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0解题思路: • 可以先二叉搜索找一下这个元素的位置,然后再开始遍历搜索一下。...原创 2020-03-24 13:01:50 · 197 阅读 · 0 评论 -
剑指Offer(三十五):数组中的逆序对
数组中的逆序对:题目链接:牛客网题目描述: 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007示例 1:输入: [7,5,6,4]输出: 5解题思路: 每一个值都要跟前面的值进行比较判断是否为逆序对,可以借助归并排...原创 2020-03-24 12:08:05 · 108 阅读 · 0 评论 -
剑指Offer刷题学习笔记汇总
渣渣鹏的学习记录1、前言2、题目总结数组(13道):字符串(9道):链表(8道):二叉树(15道):栈(3道):回溯法(2道):递归、动态规划(4道):位运算(1道):其他(11道):1、前言本系列为渣渣鹏的《剑指Offer》学习笔记。刷题平台:牛客网使用语言:JavaGitHub笔记地址: 开始刷题的时间太晚了,草草的结束了第一遍学习,把67道题过了一遍,使用的是java语言进...原创 2020-03-22 16:52:24 · 580 阅读 · 0 评论 -
剑指Offer(三十二):把数组排成最小的数
把数组排成最小的数:题目链接:牛客网题目描述: 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。示例 1:输入: [10,2]输出: “102”示例 2:输入: [3,30,34,5,9]输出: “3033459”解题思路: 比...原创 2020-03-23 15:13:38 · 144 阅读 · 0 评论 -
剑指Offer(三十):连续子数组的最大和(dp)
连续子数组的最大和:题目链接:牛客网题目描述: HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始...原创 2020-03-23 12:45:24 · 203 阅读 · 0 评论 -
剑指Offer(二十八):数组中出现次数超过一半的数字
数组中出现次数超过一半的数字:题目链接:牛客网题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2示例 2:输入: [...原创 2020-03-23 10:23:49 · 127 阅读 · 0 评论 -
剑指Offer(十九):顺时针打印矩阵
顺时针打印矩阵:题目链接:牛客网题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入: matrix = [ [1,2,3], [4,5,6], [7,8,9] ]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入: matrix = [ [1,2,3,4], ...原创 2020-03-22 22:22:08 · 91 阅读 · 0 评论 -
剑指Offer(十三):调整数组顺序使奇数位于偶数前面
调整数组顺序使奇数位于偶数前面:题目链接:牛客网题目描述: 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。示例 1:输入: nums = [1,2,3,4]输出: [1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。解题思路:解法1:遍...原创 2020-03-22 21:36:00 · 118 阅读 · 0 评论 -
剑指Offer(六):旋转数组的最小数字
旋转数组的最小数字:题目链接:牛客网题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。示例 1:输入: [1,3,5]输出: 1示例 2:...原创 2020-03-22 20:54:39 · 97 阅读 · 0 评论 -
剑指Offer(一):二维数组中的查找
二维数组中的查找:题目链接:牛客网题目描述: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。Consider the following matrix:[ [1, 4, 7, 11, 15], [2, 5, 8, 1...原创 2020-03-22 18:53:15 · 109 阅读 · 0 评论