offer
动态规划:剑指 Offer 63. 股票的最大利润
题目描述: 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 限制: 0 <= 数组长度 <= 10^5 class Solution{ public int maxProfit(int prices[]){ //状态定义:dp[i]记为利润 profit ......
【LeetCode剑指offer 03】合并两个/K个排序链表
合并两个排序链表 https://leetcode.cn/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。 示例1: 输入:1->2->4, 1->3->4 输出:1->1 ......
剑指 Offer 45. 把数组排成最小的数
题目链接:剑指 Offer 45. 把数组排成最小的数 方法:排序 解题思路 将数字转化为字符串数组,然后 $sort()$; cmp()函数 static bool cmp(string a, string b) { return a + b < b + a; } 代码 // 写法一 class ......
【剑指 Offer】67. 把字符串转换成整数
【题目】 写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正 ......
【剑指 Offer】20. 表示数值的字符串
【题目】 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。数值(按顺序)可以分成以下几个部分: 若干空格 一个 小数 或者 整数 (可选)一个 'e' 或 'E' ,后面跟着一个 整数 若干空格小数(按顺序)可以分成以下几个部分: (可选)一个符号字符('+' 或 '-') 下述格式之一 ......
剑指 Offer II 085. 生成匹配的括号
题目链接:剑指 Offer II 085. 生成匹配的括号 方法:递归 解题思路 通过选择当前加 '(' 或 ')',递归的计算所有答案。 注意:对于 ')' 的选择,只有当前 ')' 数量少于 '(' 时才可以选择; 代码 class Solution { public: vector<strin ......
剑指 Offer 65. 不用加减乘除做加法
题目链接:剑指 Offer 65. 不用加减乘除做加法 方法:二进制运算 解题思路 对于两个数 $a$ 和 $b$,其无进位的二进制位的和为 no_c = a ^ b,有进位的二进制位的和为 c = a & b << 1;有 a + b = no_c + c; 但是由于不能使用加法,那么继续对 no ......
动态规划:剑指 Offer 42. 连续子数组的最大和
题目描述: 输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。 要求时间复杂度为O(n)。 提示: 1 <= arr.length <= 10^5 -100 <= arr[i] <= 100 class Solution{ public int maxSubArr ......
【剑指 Offer】 31. 栈的压入、弹出序列
【题目】 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。 ......
【剑指 Offer】 29. 顺时针打印矩阵
【题目】 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。 示例 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],[5,6,7,8],[9,10,1 ......
动态规划:剑指 Offer 19. 正则表达式匹配
题目描述: 请实现一个函数用来匹配包含'. '和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但与"aa.a"和"ab*a"均 ......
【剑指 Offer 】62. 圆圈中最后剩下的数字
【题目】 0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的 ......
【剑指 Offer】 57 - II. 和为s的连续正数序列
【题目】 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3, ......
剑指 Offer 64. 求1+2+…+n
题目链接:剑指 Offer 64. 求1+2+…+n 方法:逻辑运算符短路原则 解题思路 例如:对于表达式 $A && B$,若 $A$ 为 $false$,那么就不会计算 $B$; 代码 class Solution { public: int sumNums(int n) { n && (n + ......
剑指 Offer 60. n个骰子的点数
题目链接:剑指 Offer 60. n个骰子的点数 方法:动态规划 解题思路 $n = 1$ 时可能的和为 $[1, 6]$,其概率为 $dp[1][] = [1/6, 1/6, 1/6, 1/6, 1/6, 1/6]$ $n = 2$ 时对于第一个骰子为 $1$ 时,第二个骰子可以为 $[1, 6 ......
【剑指 Offer 】14- I. 剪绳子
【题目】 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段 ......
【剑指 Offer】 66. 构建乘积数组
【题目】 给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。示例:输入: [1,2,3,4,5]输出: ......
用 Go 剑指 Offer 56 - I. 数组中数字出现的次数
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 示例 1: 输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1] 示例 2: 输入:nums = [1,2,10,4,1,4,3, ......
用 Go 剑指 Offer 31. 栈的压入、弹出序列 (辅助栈)
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。 示例 1 ......
(动态规划)剑指 Offer 14- II. 剪绳子 II
题目描述: 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m - 1] 。 请问 k[0]*k[1]*...*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、 ......
动态规划:剑指 Offer 14- I. 剪绳子
题目描述: 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少? 例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的 ......
剑指 Offer 09. 用两个栈实现队列 && leetcode225.用队列实现栈
剑指 Offer 09. 用两个栈实现队列 class CQueue { private: stack<int> inStack, outStack; void in2out(){ //这里必须是while循环,如果是if判断,则输出栈日常只有一个值,没有起到先入后出的作用 while(!inSta ......
剑指 Offer 62. 圆圈中最后剩下的数字
题目链接:剑指 Offer 62. 圆圈中最后剩下的数字 方法:约瑟夫环 + 倒推 解题思路 假设我们最好剩余的数字是 $N$。 执行完 "删除第三个元素" 的操作后,$N$ 在新数组中的位置 $P$ 的意义是什么?它表示,在新数组中,$N$ 前面有还有 $P$ 个元素。那么,在当前数组中,$N$ ......
剑指 Offer 59 - I. 滑动窗口的最大值
题目链接:剑指 Offer 59 - I. 滑动窗口的最大值 方法一:栈模拟队列 解题思路 模拟滑动窗口的移动过程,对于每个滑动窗口快速获取其最大值,通过栈模拟队列,可以在 $O(1)$ 时间复杂度获取最大值。 栈类: 属性:数组存储元素,栈顶但前指针,指向当前最大值的指针,指向前一个最大值的指针数 ......
哈希表:剑指 Offer 50. 第一个只出现一次的字符
题目描述:在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。 限制: 0 <= s 的长度 <= 50000 题解:哈希表 遍历字符串 s ,使用哈希表统计 “各字符数量是否 >1 ”。 再遍历字符串 s ,在哈希表中找到首个 “数量为 1 的字符”,并返回 ......
【剑指 Offer】 39. 数组中出现次数超过一半的数字
【题目】 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2 限制:1 <= 数组长度 <= 50000 来源:力扣(LeetCode)链接:ht ......
【剑指 Offer】 56 - II. 数组中数字出现的次数 II
【题目】 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 1:输入:nums = [3,4,3,3]输出:4示例 2:输入:nums = [9,1,7,9,7,9,7]输出:1 限制: 1 <= nums.length <= 10000 1 ......
面试:靠着这篇笔记,我拿下了16k车载测试offer!
1、熟悉车载系统研发和测试流程,能独立编写各种测试文档。
2、熟悉车载系统测试用例设计思路,能独立编写仪表和车机的测试用例。
3、熟悉缺陷管理工具的使用。 ......
力扣---剑指 Offer 66. 构建乘积数组
给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。 示例: 输入: [1,2,3,4,5]输出: [12 ......