leetcode
__乔木
人是铁,学习是钢
展开
-
不使用第三个变量,交换两个变量的值
1. 加减法int a = 2;int b = 3;a = a + b; // a=5;b = a - b; // b=2;a = a - b; // a=3;2. 异或位运算 ^异或: 1 ^ 1 =0 , 1 ^ 0 =1 , 0 ^ 0 =0。异或特性: a ^ b ^ a = bint a = 2;int b = 3;a = a ^ b; // a=1;b = a ^ b; // b=3;a = a ^ b; // a=1;...原创 2022-05-12 00:31:11 · 86 阅读 · 0 评论 -
leetcode: 二进制中1的个数
描述:编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).)。思想:我们只需要判断最低位是否是 1即可,然后 右移 一位。( 此算法 只能解决正数,负数会陷入死循环。)class Solution{public: int hammingWeight(uint32_t n) { int count = 0; while (n) { i原创 2022-05-10 22:03:32 · 185 阅读 · 0 评论 -
leetcode:减绳子/整数拆分
题目描述整数拆分:给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积 。减绳子给你一根长度为 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的三段,此时得到的最大乘积是18。示例 1:输入:原创 2022-05-10 21:29:22 · 263 阅读 · 0 评论 -
leetcode:机器人的运动范围
题意:地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k = 1输出:3示例 2:输入:m = 3原创 2022-05-07 12:28:12 · 97 阅读 · 0 评论 -
leetcode:矩阵中的路径
题意:给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。例如,在下面的 3×4 的矩阵中包含单词 “ABCCED”(单词中的字母已标出)。示例 1:输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D原创 2022-05-06 19:02:15 · 267 阅读 · 0 评论 -
递归实现重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。class Solution{public: TreeNode *buildTree(vector<int> &preorder, vector<int> &inorder) { int len_pre = preorder.size(); int len_in = inorder.size原创 2022-05-02 23:45:19 · 581 阅读 · 0 评论 -
leetcode:二维数组的查找
题目描述在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[[1, 4, 7, 11, 15],[2, 5, 8, 12, 19],[3, 6, 9, 16, 22],[10, 13, 14, 17, 24],[18, 21, 23, 26, 30]]给定 target = 5,返回 true。原创 2022-05-01 18:50:19 · 116 阅读 · 0 评论