算法
文章平均质量分 76
明月几时有.
语音信号处理,机器学习,深度学习
展开
-
颠倒给定的 32 位无符号整数的二进制位
颠倒给定的 32 位无符号整数的二进制位示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596,因此返回 964176192,其二进制表示形式为 00111001011...原创 2021-04-07 16:50:18 · 1991 阅读 · 2 评论 -
归并排序
归并排序时间O(nlogn),空间O(n)#pythondef merge(a, b): #归并操作,合并两个子数组 c = [] i = j = 0 while i < len(a) and j < len(b): if a[i] < b[j]: c.append(a[i]) ...原创 2020-01-12 13:20:05 · 268 阅读 · 0 评论 -
2的幂,3的幂,4的幂
2的幂给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例 1:输入: 1输出: true解释: 20 = 1示例 2:输入: 16输出: true解释: 24 = 16示例 3:输入: 218输出: false分析n < 0 肯定不是2的幂次方二进制最高位一定是1,其他位都为0,只需要检测其是否只有一个1就可以了,利用n&(n-1)将二进制表...原创 2019-12-23 10:19:52 · 730 阅读 · 0 评论 -
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。
回文字符串给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: “aba”输出: True示例 2:输入: “abca”输出: True解释: 你可以删除c字符。注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。class Solution { public boolean validPalindrome(Stri...原创 2019-12-19 10:19:28 · 4538 阅读 · 0 评论 -
查找 Person 表中所有重复的电子邮箱
编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。示例:±—±--------+| Id | Email |±—±--------+| 1 | [email protected] || 2 | [email protected] || 3 | [email protected] |±—±--------+根据以上输入,你的查询应返回以下结果:±--------+| Email |±--------+...原创 2019-12-15 10:28:00 · 1647 阅读 · 0 评论 -
搜索长度未知的有序数组
搜索长度未知的有序数组给定一个升序整数数组,写一个函数搜索 nums 中数字 target。如果 target 存在,返回它的下标,否则返回 -1。注意,这个数组的大小是未知的。你只可以通过 ArrayReader 接口访问这个数组,ArrayReader.get(k) 返回数组中第 k 个元素(下标从 0 开始)。你可以认为数组中所有的整数都小于 10000。如果你访问数组越界,ArrayR...原创 2019-12-07 11:11:04 · 2462 阅读 · 1 评论 -
移动零、移除元素
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。class Solution { public void moveZeroes(int[] nums) { /* 双指针法(j重复扫描多次)...原创 2019-11-24 12:05:49 · 179 阅读 · 0 评论 -
删除链表中等于给定值 val 的所有节点。
删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5/** * Definition for singly-linked list. * public class ListNode { * int val; * L...原创 2019-11-02 09:07:27 · 292 阅读 · 0 评论 -
删除排序数组中的重复项、 删除数组中指定的元素
删除排序数组中的重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例...原创 2019-10-25 14:33:57 · 192 阅读 · 0 评论 -
打印三角形,打印杨辉三角形
打印三角形,打印杨辉三角形import java.util.*;public class Main { /** * 1 * 1 1 * 1 2 1 * 1 3 3 1 * 1 4 6 4 1 * * * * ** * *** * ...原创 2019-10-24 09:31:18 · 145 阅读 · 0 评论 -
单词方块
给你一个单词序列,判断其是否形成了一个有效的单词方块。有效的单词方块是指此由单词序列组成的文字方块的 第 k 行 和 第 k 列 (0 ≤ k < max(行数, 列数)) 所显示的字符串完全相同。注意:给定的单词数大于等于 1 且不超过 500。单词长度大于等于 1 且不超过 500。每个单词只包含小写英文字母 a-z。示例 1:输入:[“abcd”,“bnrt”,“...原创 2019-10-21 15:11:03 · 244 阅读 · 0 评论 -
有效括号、单词个数
有效括号给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: “()”输出: true示例 2:输入: “()[]{}”输出: true示例 3:输入: “(]”输出: false示例 4:输入:...原创 2019-10-21 15:10:38 · 160 阅读 · 0 评论 -
报数、压缩字符串
报数报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。其前五项如下:1112112111112211 被读作 “one 1” (“一个一”) , 即 11。11 被读作 “two 1s” (“两个一”), 即 21。21 被读作 “one 2”, “one 1” (“一个二” , “一个一”) , 即 1211。给定一...原创 2019-10-19 09:22:54 · 134 阅读 · 0 评论 -
迭代压缩字符串
迭代压缩字符串对于一个压缩字符串,设计一个数据结构,它支持如下两种操作: next 和 hasNext。给定的压缩字符串格式为:每个字母后面紧跟一个正整数,这个整数表示该字母在解压后的字符串里连续出现的次数。next() - 如果压缩字符串仍然有字母未被解压,则返回下一个字母,否则返回一个空格。hasNext() - 判断是否还有字母仍然没被解压。注意:请记得将你的类在 StringI...原创 2019-10-19 09:22:45 · 773 阅读 · 0 评论 -
旋转数组
旋转数组给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。示例 1:输入: [1,2,3,4,5,6,7] 和 k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例 2:输入: [-1,-100,3,99...原创 2019-10-13 09:52:26 · 188 阅读 · 0 评论 -
非递减数列
非递减数列给定一个长度为 n 的整数数组,你的任务是判断在最多改变 1 个元素的情况下,该数组能否变成一个非递减数列。我们是这样定义一个非递减数列的: 对于数组中所有的 i (1 <= i < n),满足 array[i] <= array[i + 1]。示例 1:输入: [4,2,3]输出: True解释: 你可以通过把第一个4变成1来使得它成为一个非递减数列。示...原创 2019-10-13 09:51:20 · 223 阅读 · 0 评论 -
判断数组是不是某二叉搜索树的后序遍历的结果
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。# -*- coding:utf-8 -*-'''链接:https://www.nowcoder.com/questionTerminal/a861533d45854474ac791d90e447bafd来源:牛客网已知条件:后序序列最后一...原创 2019-06-22 12:10:18 · 533 阅读 · 0 评论 -
罗马数字转整数,整数转罗马数字
罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个...原创 2019-08-16 17:57:44 · 235 阅读 · 0 评论 -
间隔反转字符串,反转元音字母
间隔反转字符串给定一个字符串和一个整数 k,你需要对从字符串开头算起的每个 2k 个字符的前k个字符进行反转。如果剩余少于 k 个字符,则将剩余的所有全部反转。如果有小于 2k 但大于或等于 k 个字符,则反转前 k 个字符,并将剩余的字符保持原样。示例:输入: s = “abcdefg”, k = 2输出: “bacdfeg”要求:该字符串只包含小写的英文字母。给定字符串的长度和 ...原创 2019-08-16 18:09:12 · 234 阅读 · 0 评论 -
重塑矩阵
重塑矩阵在MATLAB中,有一个非常有用的函数 reshape,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。示例 1:输入:...原创 2019-08-29 14:54:34 · 148 阅读 · 0 评论 -
完美数,自除数
完美数对于一个 正整数,如果它和除了它自身以外的所有正因子之和相等,我们称它为“完美数”。给定一个 整数 n, 如果他是完美数,返回 True,否则返回 False示例:输入: 28输出: True解释: 28 = 1 + 2 + 4 + 7 + 14提示:输入的数字 n 不会超过 100,000,000. (1e8)class Solution { public boo...原创 2019-08-29 14:54:48 · 325 阅读 · 0 评论 -
增减字符串匹配
增减字符串匹配给定只含 “I”(增大)或 “D”(减小)的字符串 S ,令 N = S.length。返回 [0, 1, …, N] 的任意排列 A 使得对于所有 i = 0, …, N-1,都有:如果 S[i] == “I”,那么 A[i] < A[i+1]如果 S[i] == “D”,那么 A[i] > A[i+1]示例 1:输出:“IDID”输出:[0,4,1,3,...原创 2019-08-29 14:55:00 · 163 阅读 · 0 评论 -
Java中ArrayList与LinkedList的区别
Java中ArrayList与LinkedList的区别一般大家都知道ArrayList和LinkedList的区别: 1. ArrayList的实现是基于数组,LinkedList的实现是基于双向链表。 2. 对于随机访问,ArrayList优于LinkedList 3. 对于插入和删除操作,LinkedList优于ArrayList4. LinkedList比ArrayL...原创 2019-08-29 14:55:12 · 125 阅读 · 0 评论 -
二叉树的最近公共祖先
求如下二叉树的最近公共祖先 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15用例LCA(9, 11) = 2LCA(9. 6) = 1LCA(12, 3) =1分析从用例中看,9的祖先是 9/2=4 4/2=2 , 2/2=1, 即(4,2,1都是9的祖先)...原创 2019-08-31 19:08:08 · 145 阅读 · 0 评论 -
无序数组求众数
无序数组求众数给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2分析排序后中间位置肯定为众数class Solution { public int majorityEle...原创 2019-08-31 19:15:20 · 604 阅读 · 0 评论 -
字符串相加
字符串相加给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。注意:num1 和num2 的长度都小于 5100.num1 和num2 都只包含数字 0-9.num1 和num2 都不包含任何前导零。你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。分析双指针分别指向两个字符串的末尾,同步向前移动,分别取当前指针所代表的的数字,...原创 2019-09-10 19:04:45 · 637 阅读 · 0 评论 -
三维形体的表面积
三维形体的表面积在 N * N 的网格上,我们放置一些 1 * 1 * 1 的立方体。每个值 v = grid[i][j] 表示 v 个正方体叠放在对应单元格 (i, j) 上。请你返回最终形体的表面积。示例 1:输入:[[2]]输出:10示例 2:输入:[[1,2],[3,4]]输出:34示例 3:输入:[[1,0],[0,2]]输出:16示例 4:输入:[[1,1...原创 2019-09-10 19:06:56 · 259 阅读 · 0 评论 -
整数反转
整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231−2^{31}−231, 231−12^{31} − 1231−1]。请根据这个假设,如果反转后...原创 2019-09-10 19:32:28 · 103 阅读 · 0 评论 -
将数组分成和相等的三个部分
将数组分成和相等的三个部分给定一个整数数组 A,只有我们可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果我们可以找出索引 i+1 < j 且满足 (A[0] + A[1] + … + A[i] == A[i+1] + A[i+2] + … + A[j-1] == A[j] + A[j-1] + … + A[A.length - 1]) 就可以将数组...原创 2019-10-03 20:19:55 · 479 阅读 · 0 评论 -
计数二进制子串,特殊等价字符串组
计数二进制子串给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。示例 1 :输入: “00110011”输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现的子串要计算它们出现的...原创 2019-10-03 20:21:53 · 211 阅读 · 0 评论 -
最长公共前缀
最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。class Solution { public String longestComm...原创 2019-10-10 09:37:08 · 141 阅读 · 0 评论 -
重复的子字符串
重复的子字符串给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: “abab”输出: True解释: 可由子字符串 “ab” 重复两次构成。示例 2:输入: “aba”输出: False示例 3:输入: “abcabcabcabc”输出: True解释: 可由子字符串 “abc” 重复四...原创 2019-10-10 09:37:19 · 186 阅读 · 0 评论 -
三数之和,四数之和
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[[-1, 0, 1],[-1, -1, 2]]分析:暴力法O(n3)O(n^3)O...原创 2019-08-11 22:16:58 · 128 阅读 · 0 评论 -
快速求幂的迭代和递归解法
实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10输出: 1024.00000示例 2:输入: 2.10000, 3输出: 9.26100示例 3:输入: 2.00000, -2输出: 0.25000解释: 2-2 = 1/22 = 1/4 = 0.25说明:-100.0 < x < 100.0n 是 32 位有...原创 2019-08-01 19:18:03 · 898 阅读 · 0 评论 -
最长公共子序列、交叉字符串
77. 最长公共子序列给出两个字符串,找到最长公共子序列(LCS),返回LCS的长度。样例样例 1:输入: “ABCD” and “EDCA”输出: 1解释:LCS 是 'A' 或 'D' 或 'C'样例 2:输入: “ABCD” and “EACB”输出: 2解释: LCS 是 "AC"说明最长公共子序列的定义:最长公共子序列问题是在一组序列(通常2个)...原创 2019-07-17 22:30:10 · 127 阅读 · 0 评论 -
求两个数和
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路:位运算两个数异或:相当于每一位相加,而不考虑进位;两个数相与,并左移一位:相当于求得进位;将上述两步的结果相加具体步骤:首先看十进制是如何做的: 5+7=12,三步走第一步:相加各位的值,不算进位,得到2。第二步:计算进位值,得到10. 如果这一步的进位值为0,那么第一步得到的值就是最...原创 2019-06-24 11:01:17 · 719 阅读 · 0 评论 -
如何得到一个数据流中的中位数
题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。分析找中位数,区分了数组长度为奇数偶数的情况,分别计算中位数值,注意是输入流,数据是一个一个输入的,所以...原创 2019-06-26 21:18:13 · 872 阅读 · 0 评论 -
字符串的全排列
题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。分析:看过答案,博客,用递归解决,总感觉有点问题:递归解法每次处理一个子串,怎么将子串拼接成完整的字符串?(写这几个字时,灵光一...原创 2019-06-23 19:58:58 · 407 阅读 · 0 评论 -
统计一个数字在排序数组中出现的次数
题目描述统计一个数字在排序数组中出现的次数。分析既然是有序数组,要找其中的某个元素,时间最低的就是二分查找了,关键是需要找到连续的数字的上下界,这是一个技巧,也是难点。时间O(logn) 空间O(1)class Solution: def GetNumberOfK(self, data, k): def binary_search_lower_bound(a, x...原创 2019-06-26 19:50:12 · 669 阅读 · 0 评论 -
扑克牌顺子
题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张...原创 2019-07-07 16:59:30 · 120 阅读 · 0 评论