自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (2)
  • 收藏
  • 关注

原创 477. 汉明距离总和

两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。计算一个数组中,任意两个数之间汉明距离的总和。前一周在写毕业论文所以落下了一周的题,之后找时间补上吧。这周还要准备答辩所以也只是偶尔刷一刷题,会做的话就做一做,不会的话我就偷个懒嘿嘿昨天的题目是计算两个整数的汉明距离,解题方法很简单:class Solution: def HammingDistance(self, x: int, y: int) -> int: return bin(x^y).count('1

2021-05-28 10:17:26 128

原创 993. 二叉树的堂兄弟节点

在二叉树中,根节点位于深度 0 处,每个深度为 k 的节点的子节点位于深度 k+1 处。如果二叉树的两个节点深度相同,但 父节点不同 ,则它们是一对堂兄弟节点。我们给出了具有唯一值的二叉树的根节点 root ,以及树中两个不同节点的值 x 和 y 。只有与值 x 和 y 对应的节点是堂兄弟节点时,才返回 true 。否则,返回 false。这个题很明显就是考二叉树的遍历,我选择了层序遍历:# Definition for a binary tree node.# class TreeNode:

2021-05-17 10:04:08 163

原创 421. 数组中两个数的最大异或值

给你一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n 。进阶:你可以在 O(n) 的时间解决这个问题吗?如果没有限定条件 O(n) 那么我就可以使用暴力法遍历两遍,将所有数都与其他数进行异或操作,就可以计算出最大异或值。但是有限定条件的话,感觉就要使用一些数据结构了,依靠我当前的水平还是做不出这种题,学习了一遍,关于构造树以及前缀树等知识。class Trie: def __init__(self, val):

2021-05-16 16:32:09 230

原创 13. 罗马数字转整数

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况

2021-05-15 09:37:14 102

原创 12. 整数转罗马数字

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况

2021-05-14 11:06:01 132

原创 1310. 子数组异或查询

有一个正整数数组 arr,现给你一个对应的查询数组 queries,其中 queries[i] = [Li, Ri]。对于每个查询 i,请你计算从 Li 到 Ri 的 XOR 值(即 arr[Li] xor arr[Li+1] xor … xor arr[Ri])作为本次查询的结果。并返回一个包含给定查询 queries 所有结果的数组。class Solution: def xorQueries(self, arr: List[int], queries: List[List[int]])

2021-05-12 10:43:42 46

原创 1734. 解码异或后的排列

给你一个整数数组 perm ,它是前 n 个正整数的排列,且 n 是个 奇数 。它被加密成另一个长度为 n - 1 的整数数组 encoded ,满足 encoded[i] = perm[i] XOR perm[i + 1] 。比方说,如果 perm = [1,3,2] ,那么 encoded = [2,1] 。给你 encoded 数组,请你返回原始数组 perm 。题目保证答案存在且唯一。题目里居然有一个巨隐藏的重要条件!!!“前 n 个正整数的排列” 这句话,如果没看到的话这道题就无解了。这道

2021-05-11 16:35:16 54

原创 872. 叶子相似的树

请考虑一棵二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。举个例子,如上图所示,给定一棵叶值序列为 (6, 7, 4, 9, 8) 的树。如果有两棵二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。如果给定的两个根结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。这道题只是个二叉树遍历问题,我们需要定义一个函数,输入二叉树返回它的叶值序列,然后调用函数得到两棵二叉树的叶值序列,比较是否相同。# Definition

2021-05-10 10:05:10 59

原创 制作 m 束花所需的最少天数(二分法解题套路模板总结)

给你一个整数数组 bloomDay,以及两个整数 m 和 k 。现需要制作 m 束花。制作花束时,需要使用花园中 相邻的 k 朵花 。花园中有 n 朵花,第 i 朵花会在 bloomDay[i] 时盛开,恰好 可以用于 一束 花中。请你返回从花园中摘 m 束花需要等待的最少的天数。如果不能摘到 m 束花则返回 -1 。又是二分又是二分!五月份可能是二分月吧哈哈采用二分法题目的基本规律:已知取值的边界,即最小值和最大值。例如本题中取值边界是 [1, max(bloomDay)] ,最好的情况是第一天

2021-05-09 10:36:07 110

原创 完成所有工作的最短时间

给你一个整数数组 jobs ,其中 jobs[i] 是完成第 i 项工作要花费的时间。请你将这些工作分配给 k 位工人。所有工作都应该分配给工人,且每项工作只能分配给一位工人。工人的 工作时间 是完成分配给他们的所有工作花费时间的总和。请你设计一套最佳的工作分配方案,使工人的 最大工作时间 得以 最小化 。返回分配方案中尽可能 最小 的 最大工作时间 。猜到了今天是个困难题,话说这个题目怎么这么眼熟。。。原来它和 在 D 天内送达包裹的能力 这道题一非常相似!!!唯一的不同就是包裹那题要求分配顺序保持

2021-05-08 11:27:44 501

原创 数组异或操作

给你两个整数,n 和 start 。数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length 。请返回 nums 中所有元素按位异或(XOR)后得到的结果。美好的清晨从一道简单题开始!(但是每天这么做简单题会不会太废了哇。。。)解题思路很简单,只要不断计算出元素中的值,然后进行异或操作就行。class Solution: def xorOperation(self, n: int, start: int) -> int

2021-05-07 10:18:21 210

原创 解码异或后的数组

未知 整数数组 arr 由 n 个非负整数组成。经编码后变为长度为 n - 1 的另一个整数数组 encoded ,其中 encoded[i] = arr[i] XOR arr[i + 1] 。例如,arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。给你编码后的数组 encoded 和原数组 arr 的第一个元素 first(arr[0])。请解码返回原数组 arr 。可以证明答案存在并且是唯一的。舒服的一天从看到 简单 开始。数学知识:如果 A XOR B =

2021-05-06 09:24:42 42

原创 删除并获得点数

给你一个整数数组 nums ,你可以对它进行一些操作。每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除每个等于 nums[i] - 1 或 nums[i] + 1 的元素。开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。这道题其实转变一下,就变成了打家劫舍!刚开始使用的递归,通过一个巨长的测试集就超时了,最后使用的动态规划+滑动窗口,不使用递归的话可太省时间啦!首先是数据集的处理,将 nums[i] 作为下标,所有 nums[i] 的

2021-05-05 15:37:46 86

原创 粉刷房子 III

本来想做一下系列题的,无奈Ⅰ和Ⅱ只有会员才能看,所以老老实实做Ⅲ吧hh在一个小城市里,有 m 个房子排成一排,你需要给每个房子涂上 n 种颜色之一(颜色编号为 1 到 n )。有的房子去年夏天已经涂过颜色了,所以这些房子不需要被重新涂色。我们将连续相同颜色尽可能多的房子称为一个街区。(比方说 houses = [1,2,2,3,3,2,1,1] ,它包含 5 个街区 [{1}, {2,2}, {3,3}, {2}, {1,1}] 。)给你一个数组 houses ,一个 m * n 的矩阵 cost

2021-05-05 11:05:39 50

原创 整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。感觉这题应该是考察数字和字符串之间的转换以及字符串的逆转,知道这些操作再写代码就没啥问题了。class Solution: def reverse(self, x: int) -> int: is_negative = False i

2021-05-03 10:41:56 61

原创 砖墙

你的面前有一堵矩形的、由 n 行砖块组成的砖墙。这些砖块高度相同(也就是一个单位高)但是宽度不同。每一行砖块的宽度之和应该相等。你现在要画一条 自顶向下 的、穿过 最少 砖块的垂线。如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你不能沿着墙的两个垂直边缘之一画线,这样显然是没有穿过一块砖的。给你一个二维数组 wall ,该数组包含这堵墙的相关信息。其中,wall[i] 是一个代表从左至右每块砖的宽度的数组。你需要找出怎样画才能使这条线 穿过的砖块数量最少 ,并且返回 穿过的砖块数量 。看到这个题

2021-05-02 10:27:13 98 2

原创 员工的重要性

给定一个保存员工信息的数据结构,它包含了员工 唯一的 id ,重要度 和 直系下属的 id 。比如,员工 1 是员工 2 的领导,员工 2 是员工 3 的领导。他们相应的重要度为 15 , 10 , 5 。那么员工 1 的数据结构是 [1, 15, [2]] ,员工 2的 数据结构是 [2, 10, [3]] ,员工 3 的数据结构是 [3, 5, []] 。注意虽然员工 3 也是员工 1 的一个下属,但是由于 并不是直系 下属,因此没有体现在员工 1 的数据结构中。现在输入一个公司的所有员工信息,以及

2021-05-01 10:59:16 121

原创 只出现一次的数字系列

只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?用内置函数统计就是最赖皮的:class Solution: def singleNumber(self, nums: List[int]) -> int: for n in nums: if nums.count(n) == 1:

2021-04-30 16:19:48 161

原创 三数之和

给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。和平方数之和的矩阵解法相似,只不过那个是二维的,都是这个是三维的。class Solution: def threeSum(self, nums: List[int]) -> List[List[int]]: l = len(nums) if l<3

2021-04-28 17:23:02 68

原创 平方数之和

给定一个非负整数 c ,你要判断是否存在两个整数 a 和 b,使得 a2 + b2 = c 。贡献一个无脑版本:class Solution: def judgeSquareSum(self, c: int) -> bool: end = floor(sqrt(c)) + 1 for i in range(end): j = floor(sqrt(c - i ** 2)) if (j**2+i**2)==c:

2021-04-28 16:04:30 109

原创 二叉搜索树的范围和

给定二叉搜索树的根结点 root,返回值位于范围 [low, high] 之间的所有结点的值的和。简单题有手就行,✌其实只要遍历一遍所有节点,只要在区间内累加即可。但是二叉搜索树中序遍历完就是一个有序数组,因此可以修建分支:根节点如果小于low, 则只要遍历右子树;根节点如果大于high,则只要遍历左子树;根节点在 [low, high] 之间则需要全部遍历。# 我的代码class Solution: def rangeSumBST(self, root: TreeNode, l

2021-04-27 16:25:14 83

原创 在 D 天内送达包裹的能力

今天终于不是动规惹传送带上的包裹必须在 D 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 D 天内将传送带上的所有包裹送达的船的最低运载能力。本来想好好自己写的,结果想半天没什么特别好的方法,一看题解,居然用的二分法???真是妙蛙种子进了米奇妙妙屋——妙到家了,看懂后也还是觉得很神奇class Solution: def shipWithinDay

2021-04-26 11:30:07 99

原创 组合总和(系列)

前几天动态规划,刚做出一点感觉,今天就变成回溯了,惆怅组合总和给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。 class Solution: import bisect def combinationSum(self, candidates: List

2021-04-24 16:44:24 90

原创 最大整除子集

难度:中等给你一个由 无重复 正整数组成的集合 nums ,请你找出并返回其中最大的整除子集 answer ,子集中每一元素对 (answer[i], answer[j]) 都应当满足:answer[i] % answer[j] == 0 ,或answer[j] % answer[i] == 0如果存在多个有效解子集,返回其中任何一个均可。又是动态规划,真的是动态规划月啊这题类似一个经典动态规划题 最长递增子序列设 dp[i] 是以 nums[i] 为结尾时的最大整除子集的长度,当 nums

2021-04-23 15:50:02 145

原创 经典动态规划题--最长递增子序列

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。老动态规划了设 dp[i] 是以 nums[i] 为结尾的最长严格递增子序列的长度,则:dp[i] = max(dp[j]+1), 0 <= j < iclass Solution: def lengthOfLIS(self, nums: List[int])

2021-04-23 11:32:36 588

原创 矩形区域不超过 K 的最大数值和

困难题哦!给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。题目数据保证总会存在一个数值和不超过 k 的矩形区域。困难题主要还是学习为主哈class Solution: def maxSumSubmatrix(self, matrix: List[List[int]], k: int) -> int: import bisect row, col = len(matrix), len(ma

2021-04-22 20:39:51 66 2

原创 解码方法

终于被制裁了。。。一条包含字母 A-Z 的消息通过以下映射进行了 编码 :‘A’ -> 1‘B’ -> 2…‘Z’ -> 26要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“11106” 可以映射为:“AAJF” ,将消息分组为 (1 1 10 6)“KJF” ,将消息分组为 (11 10 6)注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F” ,这是由于 “6” 和 “06” 在映射中并不等

2021-04-21 23:33:23 99

原创 实现 strStr()

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。开心,今天是俺生日,简单题的话赶快完成我就能去happy了头可断血可留,我的打卡不

2021-04-20 17:52:59 39

原创 移除元素

简单题,舒服给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。和昨天一样又是引用机制,打算采用双指针,res指向当前不为val的元素,curr遍历所有元素。class Solution: def removeElement(self, nums: List[int], val: int)

2021-04-19 16:06:43 47

原创 删除有序数组中的重复项

一个简单题啊,今天很舒服嘿嘿给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = remov

2021-04-18 09:36:36 74

原创 存在重复元素

今天的题又是个系列题呢存在重复元素给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。简单题我重拳出击!class Solution: def containsDuplicate(self, nums: List[int]) -> bool: return len(nums) != len(set(nums))集合中不会出现重复元素,因此将列表转化为集合,只要转化前后长度

2021-04-17 19:57:18 234

转载 扰乱字符串

使用下面描述的算法可以扰乱字符串 s 得到字符串 t :如果字符串的长度为 1 ,算法停止如果字符串的长度 > 1 ,执行下述步骤:在一个随机下标处将字符串分割成两个非空的子字符串。即,如果已知字符串 s ,则可以将其分成两个子字符串 x 和 y ,且满足 s = x + y 。随机 决定是要「交换两个子字符串」还是要「保持这两个子字符串的顺序不变」。即,在执行这一步骤之后,s 可能是 s = x + y 或者 s = y + x 。在 x 和 y 这两个子字符串上继续从步骤 1 开始递归执

2021-04-16 19:59:53 79

原创 打家劫舍系列

打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。这个题目一看就是动态规划,想到了爬楼梯的那个题。动态规划套路:设置一个普遍情况:假设有k户人家,则:偷第k-1户人家(则不偷第k户);偷第k户人家,加上rob(k-2)所以最高金额 money

2021-04-15 17:12:07 64

转载 实现trie(前缀树)

leetcode 208. 实现 Trie (前缀树)Trie,又称前缀树或字典树,是一棵有根树,其每个节点包含以下字段:指向子节点的指针数组children。对于本题而言,数组长度为 26,即小写英文字母的数量。此时children[0] 对应小写字母a,children[1] 对应小写字母 b,…,children[25] 对应小写字母 z。布尔字段 isEnd,表示该节点是否为字符串的结尾。需要实现: Trie() 初始化前缀树对象。 void insert(String word

2021-04-14 20:07:03 184

转载 二叉树的中序遍历

二叉树的中序遍历中序遍历:左-root-右记忆tips:根据根节点的位置定义,前序遍历是root-左-右,后序遍历是左-右-root1、递归class Solution(object): def inorderTraversal(self, root): """ :type root: TreeNode :rtype: List[int] """ res = [] def dfs(root): if not root: return # 按照 左-打印-

2021-04-13 14:23:40 80

原创 表单提交验证onsubmit=“ return checkForm()“无效,(验证用户名和密码是否为空)

今天写这个有被气到,检查了好久才终于发现了问题。。。检查一下自己哪条有问题:1、函数名。检查js里的函数名和onsubmit里的函数名是否不一样,眼睛花的话复制粘贴一下;2、格式。正确格式为οnsubmit=" return checkForm()",千万不要少了return,checkForm()后面也不要加分号;3、id传入而不是name传入。这个就是我找了半天的问题,因为表单提交给PHP的时候用的是name名传入,但是checkForm()中类似这种语句var username = docum

2020-07-02 18:29:44 1919

原创 CCF—CSP考后经验总结

(想考300分及以上的大佬可以不用看哈哈哈。。。)其实成绩也出来几天啦,但是因为考完CCF还要准备一个巨难的通信与网络考试,就继续搞学习去辽~刚开始准备CCF只是因为学校加分嘻嘻嘻,而且过了的话考试费用学校还能报销,美滋滋就一股脑报了。然而事情并没有那么简单,交完300r后我看了一下考试时间……!!!居然在六级的第二天?!!!而且我还有众多考试啊喂!我哪有时间准备啊,300大洋啊,我为什么不先...

2019-12-21 12:03:25 6860 14

原创 CCF——CSP俄罗斯方块(C++)

#CCF——CSP俄罗斯方块(C++)满分代码如下:#include<iostream>using namespace std;int a[16][10],b[5][5];int main(){ int lie,hang=0,di; for(int i=1;i<=15;i++){ for(int j=1;j<=10;j++) cin>>a[i]...

2019-12-14 14:42:57 829 1

原创 CCF-CSP折点技术(超简单满分代码)

#CCF-CSP折点技术(C++)某点分别和前后做差,只要判断两差乘积的正负就好了。多么友好的题目啊!#include<iostream>#define N 1000using namespace std;int b[N];int main(){ int n,num=0; cin>>n; for(int i=0;i<n;i++) cin>&g...

2019-12-14 11:36:15 268

原创 CCF——工资计算

#CCF——工资计算(100分)简单的判断就行啦~考试要是碰上这个题就好了哈哈哈#include<iostream>using namespace std;int t,bef;int main(){ cin>>t; int t1,t2,t3,t4,t5,t6,t7; t1=3500; t2=t1+1500*0.97; t3=t2+3000*0.9; ...

2019-12-14 11:06:04 202

中南大学微机实验报告.docx

本文档针对中南大学通信工程微机设计原理课程设计,主要关于彩灯控制器的设计,不仅有设计思路、流程图、实验原理和运行展示流程和结果,叙述清楚,分析全面,希望本文仅作为借鉴而不是直接抄袭,毕竟课设也是一个锻炼呐!

2019-11-13

中南大学数字信号处理实验报告.docx

文档针对中南大学通信工程专业关于数字信号处理课程的实验设计,主要是关于五种常用窗函数的分析和单回声滤波器、多回声滤波器、全通混响器和数字均衡器的设计。文中有清晰的设计思路、设计原理和关于每部分的解释说明,最后附有gui界面设计代码,文档仅供参考,希望大家还是通过自己的努力慢慢钻研不要直接照抄~

2019-11-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除