随笔分类 -  算法

摘要:在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求;特别一点的如订单、骑手、优惠券也都需要有唯一ID做标识。此时一个能够生成全 阅读全文
posted @ 2020-08-27 00:49 泥土里的绽放 阅读(918) 评论(0) 推荐(0) 编辑
摘要:题目描述: 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。 返回被除数 dividend 除以除数 divisor 得到的商。 整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以 阅读全文
posted @ 2020-07-09 14:05 泥土里的绽放 阅读(262) 评论(0) 推荐(0) 编辑
摘要:题目描述: 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = "hello", needle = 阅读全文
posted @ 2020-06-30 16:46 泥土里的绽放 阅读(191) 评论(0) 推荐(0) 编辑
摘要:题目描述 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。 示例 1: 给定 nums 阅读全文
posted @ 2020-06-30 13:02 泥土里的绽放 阅读(96) 评论(0) 推荐(0) 编辑
摘要:题目描述: 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 示例 1: 给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且 阅读全文
posted @ 2020-06-29 17:38 泥土里的绽放 阅读(193) 评论(0) 推荐(0) 编辑
摘要:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121输出: true示例 2: 输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3: 输入: 10输出: 阅读全文
posted @ 2020-05-09 01:29 泥土里的绽放 阅读(160) 评论(0) 推荐(0) 编辑
摘要:将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOES 阅读全文
posted @ 2020-05-09 01:01 泥土里的绽放 阅读(221) 评论(0) 推荐(0) 编辑
摘要:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2: 输入: "cbbd"输出: "bb" 来源:力扣(LeetCode)链接:https://leetcode- 阅读全文
posted @ 2020-05-09 00:13 泥土里的绽放 阅读(196) 评论(0) 推荐(0) 编辑
摘要:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123输出: 321 示例 2: 输入: -123输出: -321示例 3: 输入: 120输出: 21注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1 阅读全文
posted @ 2020-05-07 10:22 泥土里的绽放 阅读(121) 评论(0) 推荐(0) 编辑
摘要:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2: 输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3: 阅读全文
posted @ 2020-05-06 17:37 泥土里的绽放 阅读(315) 评论(0) 推荐(0) 编辑
摘要:func validIPAddress(IP string) string { if checkIPv4(IP) { return "IPv4" } if checkIPv6(IP) { return "IPv6" } return "Neither" } func checkIPv4(IP str 阅读全文
posted @ 2020-04-22 22:47 泥土里的绽放 阅读(1169) 评论(0) 推荐(0) 编辑
摘要:func find132pattern(nums []int) bool { result := false if (len(nums) == 0) { return false } min := nums[0] // 思路2: 找一个中间值,中间值前面的数字小 for i := 1; i < le 阅读全文
posted @ 2020-04-04 23:08 泥土里的绽放 阅读(287) 评论(0) 推荐(0) 编辑
摘要:给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点; 如果找到了,删除它。 说明: 要求算法时间复杂度为 O(h),h 阅读全文
posted @ 2020-03-23 09:37 泥土里的绽放 阅读(277) 评论(0) 推荐(0) 编辑
摘要:1. 跳跃表的原理 学过数据结构的都知道,在单链表中查询一个元素的时间复杂度为O(n),即使该单链表是有序的,我们也不能通过2分的方式缩减时间复杂度。 如上图,我们要查询元素为55的结点,必须从头结点,循环遍历到最后一个节点,不算-INF(负无穷)一共查询8次。那么用什么办法能够用更少的次数访问55 阅读全文
posted @ 2020-03-17 04:04 泥土里的绽放 阅读(463) 评论(0) 推荐(0) 编辑
摘要:有 1000 只水桶,其中有且只有一桶装的含有毒药,其余装的都是水。它们从外观看起来都一样。如果小猪喝了毒药,它会在 15 分钟内死去。 问题来了,如果需要你在一小时内,弄清楚哪只水桶含有毒药,你最少需要多少只猪? 回答这个问题,并为下列的进阶问题编写一个通用算法。 进阶: 假设有 n 只水桶,猪饮 阅读全文
posted @ 2020-03-17 00:49 泥土里的绽放 阅读(256) 评论(0) 推荐(0) 编辑
摘要:给定四个包含整数的数组列表 A , B , C , D ,计算有多少个元组 (i, j, k, l) ,使得 A[i] + B[j] + C[k] + D[l] = 0。 为了使问题简单化,所有的 A, B, C, D 具有相同的长度 N,且 0 ≤ N ≤ 500 。所有整数的范围在 -228 到 阅读全文
posted @ 2020-03-16 23:55 泥土里的绽放 阅读(320) 评论(0) 推荐(0) 编辑
摘要:给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。 示例 1: 输入: "abab" 输出: True 解释: 可由子字符串 "ab" 重复两次构成。示例 2: 输入: "aba" 输出: False示例 3: 输入: "abc 阅读全文
posted @ 2020-03-16 23:37 泥土里的绽放 阅读(1774) 评论(0) 推荐(0) 编辑
摘要:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1]输出: 1示例 2: 输入: [4,1,2,1,2]输出: 4 来源:力扣(LeetCo 阅读全文
posted @ 2020-03-09 13:30 泥土里的绽放 阅读(154) 评论(0) 推荐(0) 编辑
摘要:func twoSum(nums []int, target int) []int { array1 := make([]int, 0) final := 0 for i := 0; i < len(nums); i++ { for j := 0; j < len(nums); j ++ { if 阅读全文
posted @ 2020-03-08 18:59 泥土里的绽放 阅读(118) 评论(0) 推荐(0) 编辑
摘要:问题腾讯大厦有39层,你手里有两颗一抹一眼的玻璃珠。当你拿着玻璃珠在某一层往下扔的时候,一定会有两个结果,玻璃珠碎了或者没碎。大厦有个临界楼层。低于它的楼层,往下扔玻璃珠,玻璃珠不会碎,等于或高于它的楼层,扔下玻璃珠,玻璃珠一定会碎。玻璃珠碎了就不能再扔。现在让你设计一种方式,使得在该方式下,最坏的 阅读全文
posted @ 2020-03-08 17:35 泥土里的绽放 阅读(159) 评论(0) 推荐(0) 编辑