magenta

LeetCode 191. 位1的个数

大憨熊 提交于 2020-05-03 17:45:22
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 191. 位1的个数 题目 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量 )。 示例 1: 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。 示例 2: 输入:00000000000000000000000010000000 输出:1 解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。 示例 3: 输入:11111111111111111111111111111101 输出:31 解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。 提示: 请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的

LeetCode 3. 无重复字符的最长子串

萝らか妹 提交于 2020-05-03 16:01:48
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 3. 无重复字符的最长子串 题目 给定一个字符串,请你找出其中不含有重复字符的__最长子串__的长度。 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。 示例 3: 输入: "pwwkew" 输出: 3 解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/longest-substring-without-repeating-characters 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 显而易见,本题适用滑动窗口的思想来解决,具体的思路分为以下几种; 使用set存窗口内值,保证唯一;(较为简单,不做具体分析和代码实现)

LeetCode 面试题05. 替换空格

≡放荡痞女 提交于 2020-05-03 14:17:25
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 面试题05. 替换空格 题目 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy." 限制: 0 <= s 的长度 <= 10000 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 思路1-StringBuilder拼接替换 算法复杂度: 时间复杂度: $ {\color{Magenta}{\Omicron\left(n\right)}} $ 空间复杂度: $ {\color{Magenta}{\Omicron\left(1\right)}} $ 思路2-replaceAll库函数 算法复杂度: 时间复杂度: $ {\color{Magenta}{\Omicron\left(n\right)}} $ 空间复杂度: $ {\color{Magenta}{

LeetCode 202. 快乐数

泄露秘密 提交于 2020-05-01 09:01:07
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 202. 快乐数 题目 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。 如果 n 是快乐数就返回 True ;不是,则返回 False 。 示例: 输入:19 输出:true 解释: 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02 = 1 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/happy-number 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 比较容易想到的是顺序计算并判断,因为可能存在循环,所以再额外需要set来保存计算过的值用以后续验重; 另一种思路是快慢指针,因为快乐数的计算最终只会有两种结果: 进入1循环; 进入某循环链无终止循环; 纯数学分析规律,对上面思路更清晰化的解释

LeetCode 76. 最小覆盖子串

 ̄綄美尐妖づ 提交于 2020-04-27 15:21:20
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 76. 最小覆盖子串 题目 给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。 示例: 输入: S = "ADOBECODEBANC", T = "ABC" 输出: "BANC" 说明: 如果 S 中不存这样的子串,则返回空字符串 ""。 如果 S 中存在这样的子串,我们保证它是唯一的答案。 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/minimum-window-substring 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 很自然能想到的是用滑动窗口来解决; 题目有个坑就是,对于s="aaa"和t="aa",答案是"aa"而不是"a",就是说,子串必须包含t的所有字母数量至少是t的长度; 思路1-滑动窗口 因为本题参数都是字母,故可以转为数组来处理; 步骤: 创建t对应的数组need并统计其字母数量为窗口参照,创建用来搜索s的窗口数组search,窗口双指针left和right从s的0位置开始

Python是人工智能和机器学习的最佳编程语言,证据在此!

大憨熊 提交于 2020-04-24 17:46:13
人工智能与机器学习是IT行业的新兴热门领域。虽然有关其发展安全性的讨论日益增多,但开发人员仍在不断扩展人工智能的能力与存储容量。如今,人工智能已远远地超出科幻小说中的构想,成为了现实。人工智能技术广泛应用于处理分析大量数据,由于其处理的工作量及工作强度明显提高,因此这些工作今后无需人工操作。 例如,人工智能被应用于分析学中以建立预测,帮助人们创建有力策略和更为有效的解决办法。金融科技公司将人工智能应用于投资平台中,进行市场调查并预测如何实现投资收益最大化。旅游业使用人工智能发送个性化建议,或是开发聊天机器人,优化整体用户体验。这些例子都表明使用人工智能和机器学习处理大量数据会为用户提供更具个性化、更加精准的优质体验。 人工智能和机器学习如何构建未来科技 随着数据量的增多与数据复杂性的增大,人们将人工智能和机器学习应用于数据处理与分析。公平地来讲,人脑可以分析大量的数据,但这项能力会受随时可容纳数据量的限制。然而,人工智能却不受此限制,它能提供更为精准的预测和观点,提高业务效率、生产率,降低生产成本。为此,许多行业都开始应用人工智能和机器学习,提高产品性能、推动产品研发,就不足为奇了。 德勤研究表明,在以提高生产率为目的的技术转型中,采用人工智能技术辅助公司发展成为最新趋势。他们的预测也证明了这一点,即在未来24个月内,更多公司会在产品和生产流程中使用人工智能,达到更高效率

LeetCode 199. 二叉树的右视图

我与影子孤独终老i 提交于 2020-04-23 11:08:06
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 199. 二叉树的右视图 题目 给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例: 输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4] 解释: 1 <--- / \ 2 3 <--- \ \ 5 4 <--- 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/binary-tree-right-side-view 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 本题等价于树的层次遍历,只是结果要求记录每层的最右侧值; 层次遍历实为BFS,此外DFS也能解决; 思路1-BFS层次遍历 步骤: 每层从左至右入队; 顺次遍历队列节点的左右子节点并入队,且记录最后一个节点值至list; 算法复杂度: 时间复杂度: $ {\color{Magenta}{\Omicron\left(n\right)}} $ 空间复杂度: $ {\color{Magenta}{\Omicron\left(n

LeetCode 560. 和为K的子数组

我与影子孤独终老i 提交于 2020-04-23 07:17:21
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 560. 和为K的子数组 题目 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。 示例 1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。 说明 : 数组的长度为 [1, 20,000]。 数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/subarray-sum-equals-k 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 本题与 LeetCode 1248. 统计「优美子数组」 为同类问题,可对比学习; 思路1-用map记录累加和; 思路解析:如果i和j之间的和为k,i之前的和为sum1,j之前的和为sum2,那么就有sum2-sum1=k,所以使用map一次遍历并记录以sum为key,value为其出现的次数; 需要注意的是,起始map需要添加(0

LeetCode 466. 统计重复个数

天涯浪子 提交于 2020-04-21 14:25:45
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 466. 统计重复个数 题目 由 n 个连接的字符串 s 组成字符串 S,记作 S = [s,n]。例如,["abc",3]=“abcabcabc”。 如果我们可以从 s2 中删除某些字符使其变为 s1,则称字符串 s1 可以从字符串 s2 获得。例如,根据定义,"abc" 可以从 “abdbec” 获得,但不能从 “acbbe” 获得。 现在给你两个非空字符串 s1 和 s2(每个最多 100 个字符长)和两个整数 0 ≤ n1 ≤ 106 和 1 ≤ n2 ≤ 106。现在考虑字符串 S1 和 S2,其中 S1=[s1,n1] 、S2=[s2,n2] 。 请你找出一个可以满足使[S2,M] 从 S1 获得的最大整数 M 。 示例: 输入: s1 ="acb",n1 = 4 s2 ="ab",n2 = 2 返回: 2 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/count-the-repetitions 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路

LeetCode 11. 盛最多水的容器

匆匆过客 提交于 2020-04-20 07:24:37
我的LeetCode: https://leetcode-cn.com/u/ituring/ 我的LeetCode刷题源码[GitHub]: https://github.com/izhoujie/Algorithmcii LeetCode 11. 盛最多水的容器 题目 给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明 :你不能倾斜容器,且 n 的值至少为 2。 图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。 示例: 输入:[1,8,6,2,5,4,8,3,7] 输出:49 来源:力扣(LeetCode) 链接: https://leetcode-cn.com/problems/container-with-most-water 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路 本题相像的是 LeetCode 42. 接雨水 ,可以对比学习; 思路1-贪心算法之双指针遍历 首先明确两个挡板中的最小挡板决定了储水上限,所以贪心或者说动态规划时围绕这个关键点展开; 步骤: