
Code
在LeetCode上刷的题目
syncdoodle
2020年写300篇博客!
展开
-
LeetCode 关于位运算的几道题
文章目录零、异或的概念性质规律LeetCode136、只出现一次的数字LeetCode137、只出现一次的数字 II剑指 Offer 56 - I. 数组中数字出现的次数零、异或的概念性质两个数字异或的结果a^b是将 a 和 b 的二进制每一位进行运算,得出的数字。运算的逻辑是相同为1,不同为0。规律任何数和本身异或则为 0任何数和 0 异或是 本身异或满足交换律。 即 a ^ b ^ c ,等价于 a ^ c ^ bLeetCode136、只出现一次的数字给定一个非空整原创 2020-08-11 07:27:25 · 144 阅读 · 0 评论 -
剑指 Offer 64. 求1+2+…+n (短路写法)
求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。示例 1:输入: n = 3输出: 6示例 2:输入: n = 9输出: 45 限制:1 <= n <= 10000int sumNums(int n){ n && (n += sumNums(n-1)); return n;}n当做语句1n += sumNums(n-1)当做语句2由短路原则原创 2020-08-11 04:53:00 · 136 阅读 · 0 评论 -
Leetcode343 整数拆分(动态规划+数学)
给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2 输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例 2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。数学方式证明核心: 尽量分出更多的 3首先,通过均值不等式,很容易验证当每一个拆分值都相等的时候,才具有最大值,所以实际上就是将这个数均分。那么,对于整数 a ,我们将其分解成 n 份,每一份为原创 2020-07-30 16:19:00 · 270 阅读 · 0 评论 -
LeetCode104 二叉树的最大深度(递归两行代码)
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。class Solution {public: int maxDepth(TreeNode* root) { if(!root) return 0; re原创 2020-07-28 21:52:04 · 155 阅读 · 0 评论 -
LeetCode64 最小路径和(简单动态规划)
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。一个简单的动态规划:class Solution {public: int minPathSum(vector<vector<int>>& grid) {原创 2020-07-27 23:28:44 · 163 阅读 · 0 评论 -
LeetCode392 判断子序列(简单每日一题)
给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例 1:s = "abc", t = "ahbgdc"返回 true.示例 2:s = "axc", t = "ahbg原创 2020-07-27 23:22:59 · 169 阅读 · 0 评论 -
LeetCode1528 重新排列字符串(更快的O(n)解法)
给你一个字符串 s 和一个 长度相同 的整数数组 indices 。请你重新排列字符串 s ,其中第 i 个字符需要移动到 indices[i] 指示的位置。返回重新排列后的字符串。示例 1:输入:s = "codeleet", indices = [4,5,6,7,0,2,1,3]输出:"leetcode"解释:如图所示,"codeleet" 重新排列后变为 "leetcode" 。示例 2:输入:s = "abc", indices = [0,1,2]输出:"abc"解释:重新排列原创 2020-07-27 23:17:31 · 380 阅读 · 0 评论 -
LeetCode1529 灯泡开关IV
https://leetcode-cn.com/problems/bulb-switcher-iv/房间中有 n 个灯泡,编号从 0 到 n-1 ,自左向右排成一行。最开始的时候,所有的灯泡都是 关 着的。请你设法使得灯泡的开关状态和 target 描述的状态一致,其中 target[i] 等于 1 第 i 个灯泡是开着的,等于 0 意味着第 i 个灯是关着的。有一个开关可以用于翻转灯泡的状态,翻转操作定义如下:选择当前配置下的任意一个灯泡(下标为 i )翻转下标从 i 到 n-1 的每个灯泡翻原创 2020-07-27 23:08:36 · 171 阅读 · 0 评论 -
剑指offer 面试题7.重建二叉树
0、题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果都不包含重复的数字。 1、解法 1)由前序遍历的第一个节点可以得到该树的根节点R。 2)在中序遍历中找到该根节点R,R节点可将中序遍历的序列分成左子树和右子树。 3)将左子树和右子树作为新的子树并重复1) ...原创 2020-03-02 11:58:00 · 118 阅读 · 0 评论 -
剑指offer 面试题5.替换空格
0.题目描述 将一串字符串中的空格替换为 '%20' 例如: we are haapy -> we%20are%20happy 进一步理解题意:空格为一个字符,%20为三个字符。 查找空格On即可,这题所要考虑的是如何降低挪动字符的时间复杂度。 1.设立指针解法 插一句自己的想法:先计算出有多少...原创 2020-03-01 11:25:00 · 221 阅读 · 0 评论 -
剑指offer 面试题4.二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。本文通过对重要条件:“每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序”的理解逐步进行优化。1.暴力搜索不考虑两个递增的特性,直接对该二维数组进行行列搜索。时间复杂度取决于数组的大小,O...原创 2020-03-01 11:00:00 · 138 阅读 · 0 评论 -
剑指offer 面试题3.数组中重复的数字
0、题目描述 一个长度为n的数组中所有数字都在0~n-1之间 数组中有些数字是重复的,有些是不重复的 不知道每个数字重复几次 请找任意一个重复的数字 例:长度为7的数组{2、3、1、0、2、5、3}输出2或3 0.1、朴素想法--排序OR桶排 ①很容易想到的是先排序,然...原创 2020-02-29 16:45:00 · 209 阅读 · 0 评论 -
Leetcode#66.加一 (C++解法)
目录一、题目描述二、解法9,9,9,91,2,3,4 & 1,9,9,9题目链接: https://leetcode-cn.com/problems/plus-one/一、题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:...原创 2020-03-30 04:58:00 · 325 阅读 · 0 评论 -
剑指offer 面试题16. 数值的整数次方(快速幂解法)
目录题目描述朴素解法--思考所有情况快速幂解法本题解答题目描述实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。示例 1:输入: 2.00000, 10输出: 1024.00000示例2:输入: 2.10000, 3输出: 9.26100示例3:...原创 2020-03-30 21:48:00 · 195 阅读 · 0 评论