武器 秘密offer

[剑指offer] 搜索算法

JZ53 数字在升序数组中出现的次数 1 /* 二分左边界 */ 2 public class JZ53_1 3 { 4 public static int GetNumberOfK(int[] nums, int k) 5 { 6 int left = 0, right = nums.length ......
算法 offer

《剑指Offer》-21-调整数组顺序使奇数位于偶数前面

第一想法是双指针,一个指针用于遍历,一个指针用于标记奇数和偶数的分界,而调整位置则通过交换来实现 思路来自于快排代码,分隔指针+交换,也算是双指针? vector<int> exchange(vector<int>& nums) { // 一个遍历指针,一个分隔指针,odd指向第一个偶数 int o ......
奇数 偶数 数组 顺序 Offer

《剑指Offer》-34-二叉树中和为某一值的路径

思路 要求是从根节点开始的路径,这会比从任意节点开始的路径简单很多 思路是从根节点开始遍历每一条路径,如果和没有达到目标值就继续向下遍历 大于就回退,等于就返回到结果集中,可以看到这是一个回溯动作 实际过程中,首先不管是等于还是大于,回退pop()操作都要执行,这样才不会影响到后面 其次,这里要求必 ......
路径 Offer 34

[剑指offer] 队列&栈篇

JZ9 用两个栈实现队列 1 /* 模拟入队 */ 2 public class JZ9_1 3 { 4 public static Stack<Integer> stack1 = new Stack<Integer>(); 5 public static Stack<Integer> stack2 ......
队列 offer amp

24届 CPP 菜鸡选手秋招 0 offer 记录

简历信息: 绩点:年级前10%,专业课一半满绩点 竞赛:ICPC/CCPC银,蓝桥杯C++ A组国一(都是大一打的) 实习: 阿里妈妈:内容不太多,但有一定工作量(cache 相关,偏底层,面试官一般不感兴趣,会问但往往不会深入问,导致看起来毫无难度) 华为:比较水,主要是研究各种哈希表和实现无锁哈 ......
选手 offer CPP

[剑指offer] 回溯篇

JZ12 矩阵中的路径 1 /* DFS */ 2 public class JZ12_1 3 { 4 public static boolean[][] vis; 5 public static int[] dx = new int[]{-1, 1, 0, 0}; 6 public static ......
offer

[剑指offer] 模拟篇

JZ29 顺时针打印矩阵 1 /* 模拟 */ 2 public class JZ29_1 3 { 4 public static ArrayList<Integer> printMatrix(int[][] matrix) 5 { 6 ArrayList<Integer> res = new Ar ......
offer

今日CF新武器

CF新武器:引领尖端科技的未来 随着时代的不断发展,CF新武器在近几年内取得了巨大的突破和创新,为玩家带来了更加震撼的游戏体验。这些新武器不仅在外观上进行了全新设计,更是融入了尖端科技,为玩家提供了更多战术选择和多样化的战斗方式。 科幻之剑:CF新武器的璀璨之星 科幻之剑是CF新武器中的一款璀璨之星 ......
武器

[剑指offer] 链表篇

JZ6 从尾到头打印链表 1 /* 从尾到头递归 */ 2 public class JZ6_1 3 { 4 private static ArrayList<Integer> res = new ArrayList<>(); 5 6 public static ArrayList<Integer> ......
offer

代码随想录算法训练营第8天| ● 344.反转字符串 ● 541. 反转字符串II ● 剑指Offer 05.替换空格 ● 151.翻转字符串里的单词 ● 剑指Offer58-II.左旋转字符串

344.反转字符串 mydemo--(一次就过)--(成功) class Solution { public: void reverseString(vector<char>& s) { int len = s.size(); char tmp; int i=0; int j = len-1; wh ......
字符串 字符 随想录 左旋 Offer

剑指 Offer 41. 数据流中的中位数

class MedianFinder { public: /** initialize your data structure here. */ // 注意小根堆的定义方式 priority_queue<int, vector<int>, greater<int>> up; // 小根堆,默认放从大 ......
中位数 数据流 数据 Offer 41

商业秘密权

......
商业秘密 秘密 商业

剑指 Offer 68 - II. 二叉树的最近公共祖先

题目链接: 剑指 Offer 68 - II. 二叉树的最近公共祖先 题目描述: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 解法思路: 代码: /** * Definition for a binary tree node. * type TreeNode struct { * Va ......
祖先 Offer 68 II

剑指 Offer 68 - I. 二叉搜索树的最近公共祖先

题目链接: 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 题目描述: 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 解法思路: 代码: /** * Definition for a binary tree node. * type TreeNode struct { * ......
祖先 Offer 68

剑指 Offer 67. 把字符串转换成整数

题目链接: 剑指 Offer 67. 把字符串转换成整数 题目描述: 写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。 解法思路: 直接模拟题 代码: func strToInt(s string) int { s = strings.Trim ......
整数 字符串 字符 Offer 67

剑指 Offer 66. 构建乘积数组

题目链接: 剑指 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- ......
乘积 数组 Offer 66

剑指 Offer 65. 不用加减乘除做加法

题目链接: 剑指 Offer 65. 不用加减乘除做加法 题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。 解法思路: 不用加减乘除,那么可以用位运算代替: 可以用 a^b 运算表示无进位的加法 可以用 (a&b)<<1 表示进位 因此 ......
加减乘除 加法 不用 Offer 65

剑指 Offer 64. 求1+2+…+n

题目链接: 剑指 Offer 64. 求1+2+…+n 题目描述: 求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 解法思路: 代码: func sumNums(n int) int { res := 0 ......
Offer 64

剑指 Offer 63. 股票的最大利润

题目链接: 剑指 Offer 63. 股票的最大利润 题目描述: 假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少? 解法思路: 使用 minv 记录前 i 天的最低价格,第 i 天卖出的利润就是 prices[i] - minv ,遍历一遍数组,不断更新最 ......
利润 股票 Offer 63

剑指 Offer 62. 圆圈中最后剩下的数字

题目链接: 剑指 Offer 62. 圆圈中最后剩下的数字 题目描述: 0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字(删除后从下一个数字开始计数)。求出这个圆圈里剩下的最后一个数字。 例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第 ......
圆圈 数字 Offer 62

剑指 Offer 60. n个骰子的点数

题目链接: 剑指 Offer 60. n个骰子的点数 题目描述: 把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 解法思路: 还未理解 代码: // 通常做法是声明一个二维数组 dp ,dp[i][j] 代表前 i 个骰子的点数和 j 的概率, // ......
骰子 点数 Offer 60

剑指 Offer 61. 扑克牌中的顺子

题目链接: 剑指 Offer 61. 扑克牌中的顺子 题目描述: 从若干副扑克牌中随机抽 5 张牌,判断是不是一个顺子,即这5张牌是不是连续的。 2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。 解法思路: 代码: // 1.将所有 ......
扑克牌 扑克 Offer 61

剑指 Offer 59 - I. 滑动窗口的最大值

题目链接: 剑指 Offer 59 - I. 滑动窗口的最大值 题目描述: 给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。 解法思路: 单调队列: 维护一个单调的队列,队列中保存的是对应数字的数组下标 每新加进来一个元素,首先删除队头(超出滑动窗口的范围的值) 然后比较 ......
最大值 Offer 59

剑指 Offer 58 - II. 左旋转字符串

题目链接: 剑指 Offer 58 - II. 左旋转字符串 题目描述: 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。 比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。 解法思路: 常规的切 ......
左旋 字符串 字符 Offer 58

剑指 Offer 56 - II. 数组中数字出现的次数 II

题目链接: 剑指 Offer 56 - II. 数组中数字出现的次数 II 题目描述: 在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。 解法思路: 代码: ......
数组 次数 数字 Offer II

剑指 Offer 57 - II. 和为s的连续正数序列

题目链接: 剑指 Offer 57 - II. 和为s的连续正数序列 题目描述: 输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。 序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。 解法思路: 双指针: 当总和小于 target 时,j 指 ......
正数 序列 Offer 57 II

剑指 Offer 56 - I. 数组中数字出现的次数

题目链接: 剑指 Offer 56 - I. 数组中数字出现的次数 题目描述: 一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。 解法思路: 代码: func singleNumbers(nums [ ......
数组 次数 数字 Offer 56

剑指 Offer 55 - II. 平衡二叉树

题目链接: 剑指 Offer 55 - II. 平衡二叉树 题目描述: 输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 解法思路: 求出二叉树中每个节点的左右子树的高度(利用上一题的代码) 判断左右子树的高度差是否超过 ......
Offer 55 II

剑指 Offer 55 - I. 二叉树的深度

题目链接: 剑指 Offer 55 - I. 二叉树的深度 题目描述: 输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。 解法思路: 代码: 层序遍历的方式求树的深度 /** * Definition for a bin ......
深度 Offer 55

剑指 Offer 54. 二叉搜索树的第k大节点

题目链接: 剑指 Offer 54. 二叉搜索树的第k大节点 题目描述: 给定一棵二叉搜索树,请找出其中第 k 大的节点的值。 解法思路: 由于题目中二叉树是二叉搜索树(中序遍历是升序的),要求的是第 k 大的节点值,也就是倒数第 k 个数, 因此可以转换一下遍历顺序,按照 右->根->左的顺序进行 ......
节点 Offer 54