自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(174)
  • 资源 (5)
  • 收藏
  • 关注

原创 LC 汉明距离

两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。给你两个整数 x 和 y,计算并返回它们之间的汉明距离。整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x思路:总思路:异或,因为异或相同为0,不同为1,之后只需要看异或后的结果中有多少个1即可。function hammingDistance(x: number, y: number): number { let count = 0; let result = x ^ y;

2021-10-21 21:20:43 230

原创 LC 位1的个数

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。提示:请注意,在某些语言(如 Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。思路:总思路:n & (n-1) 可以消

2021-10-21 20:47:55 179

原创 LC 罗马数字转整数

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数

2021-10-21 20:42:54 298

原创 LC 3的幂

给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x思路:总思路:使用公式function isPowerOfThree(n: number): boolean { return (Math.log10(n) / Math.log10(3)) % 1 == 0;};...

2021-10-21 20:38:53 129

原创 LC 计数质数

统计所有小于非负整数 n 的质数的数量。思路:总思路:使用 埃拉托斯特尼筛选法 进行过滤function countPrimes(n: number): number { var isNumPrimesArr: Boolean[] = []; for (let i=0;i<n;i++){ isNumPrimesArr[i] = true; } var count = 0; for(let i=2; i<=n; i++) {

2021-10-20 17:55:51 82

原创 LC Fizz Buzz

给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:answer[i] == “FizzBuzz” 如果 i 同时是 3 和 5 的倍数。answer[i] == “Fizz” 如果 i 是 3 的倍数。answer[i] == “Buzz” 如果 i 是 5 的倍数。answer[i] == i 如果上述条件全不满足。思路:总思

2021-10-20 17:10:07 82

原创 LC 最小栈

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。方法一:使用辅助堆栈思路:借用一个辅助栈 因为TS中没有栈,所以用数组代替,用于存获取stack中最小值。push()方法: 每当push()新值进来时,如果 小于等于 helpArr 栈顶值,则一起push()到 helpArr,即更新了栈顶最小

2021-10-20 17:04:36 160

原创 LC 打乱数组

给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。实现 Solution class:Solution(int[] nums) 使用整数数组 nums 初始化对象int[] reset() 重设数组到它的初始状态并返回int[] shuffle() 返回数组随机打乱后的结果思路:总思路:动态规划四大步骤:(1)确定状态(两个核心:1、最后一步;2、化成子问题得状态方程);(2)建立状态转移方程;(3)确定开始和边界条件;(4)计算顺序;本题的 dp[i] 代

2021-10-18 21:00:26 123

原创 LC 打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。思路:总思路:动态规划四大步骤:(1)确定状态(两个核心:1、最后一步;2、化成子问题得状态方程);(2)建立状态转移方程;(3)确定开始和边界条件;(4)计算顺序;本题的 dp[i] 代表的是当前

2021-10-13 22:02:23 82

原创 LC 最大子序和

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。思路:总思路:动态规划四大步骤:(1)确定状态(两个核心:1、最后一步;2、化成子问题得状态方程);(2)建立状态转移方程;(3)确定开始和边界条件;(4)计算顺序;dp[i]用来表示,终点在i的子序列的最佳子序和,这样dp[i]和dp[i-1]之间便有简单明了的关系dp[i] = Math.max(dp[i - 1], 0) + num

2021-10-13 20:46:38 77

原创 LC 爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。思路:总思路:斐波那契数列,因为上第n(n >= 3)层可以从第n-1层上也可以从第n-2层上,所以上n层的总方法为上n-1层的方法+n-2层的方法。最开始用了递归,但是发现会超时,原因是有很多的重复计算function climbStairs(n: number): number { if (n <= 1)

2021-10-13 15:45:20 165

原创 LC 第一个错误的版本

你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。思路:总思路:因为是从某个版本突然

2021-10-13 15:16:19 67

原创 LC 合并两个有序数组

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。思路:总思路:类似于归并排序/** Do

2021-10-12 17:58:40 80

原创 LC 将有序数组转换为二叉搜索树

给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。思路:总思路:因为这个数组已经是升序遍历的数组,所有我们只需要将数组中间数即为当前根节点然后依次递归求出当前根节点的左右子节点/** * Definition for a binary tree node. * class TreeNode { * val: number * left: TreeNode | null * right: TreeNode | n

2021-10-12 11:39:40 70

原创 LC 验证二叉搜索树

给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。思路:总思路:二叉搜索树的前序遍历肯定是依次递增的递归求出当前树的前序遍历数组,然后判断数组是否依次递增/** * Definition for a binary tree node. * class TreeNode { * val: number

2021-09-16 16:41:02 102

原创 LC 二叉树的最大深度

给定一个二叉树,找出其最大深度思路:递归求出当前节点的最大深度,返回当前根节点的最大深度 + 1function maxDepth(root: TreeNode | null): number { return findThisNodeDepth(root);};function findThisNodeDepth(root: TreeNode | null): number { if(root == null) return 0; return M

2021-09-16 16:38:18 68

原创 LC 旋转图像

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-09-16 16:37:21 88

原创 LC 环形链表

给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。示例:提示:链表中节点的数目范围是 [0, 104]-105 <= Node.val <= 1

2021-09-16 16:36:33 65

原创 LC 回文链表

给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。示例:提示:链表中节点数目在范围[1, 105] 内0 <= Node.val <= 9思路:双指针/** * Definition for singly-linked list. * class ListNode { * val: number * next: ListNode | null * constructor

2021-09-16 16:36:21 85

原创 LC 合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]提示:两个链表的节点数目范围是 [0, 50]-100 <= Node.val <= 100l1 和 l2 均按 非递减顺序 排列思路:双指针一次和当前所指向的 node 节点进行比对,将较小的移至新链表中,如果其中一个链表为空,则直接指向另一个链表public class S

2021-09-16 16:36:06 81

原创 LC 移动零

移动0public class Solution {public void MoveZeroes(int[] nums) {int max = nums.Length - 1;int zeropos = 0;int flag = 0;while( zeropos < max ) {// 从左到右找到第一个0,并从这个0后找第一个非0数,并交换while( zeropos < max && nums[zeropos] != 0 )zeropos ++;if( f

2021-09-16 16:35:47 66

原创 LC 删除链表的倒数第N个节点

给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。现有一个链表 – head = [4,5,1,9],它可以表示为:进阶:你能尝试使用一趟扫描实现吗?提示:链表中结点的数目为 sz1 <= sz <= 300 <= Node.val <= 1001 <= n <= sz方法一:遍历思路:◇ 首先计算出当前链表的总长度◇ 要删除的节点下标也就是 length - n◇ 因此循环在下标为 length - n - 1 时◇ 跳

2021-09-16 16:35:17 36

原创 LC 删除链表中的节点

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。。传入函数的唯一参数为 要被删除的节点现有一个链表 – head = [4,5,1,9],它可以表示为:提示:链表至少包含两个节点。链表中所有节点的值都是唯一的。给定的节点为非末尾节点并且一定是链表中的一个有效节点。不要从你的函数中返回任何结果。方法一:遍历思路:◇ 审明题意:传入的为要 删除的节点 且 非末尾节点;◇ 把要删除结点的下一个结点值赋给要删除的结点,;◇ 然后删除下一个结点即可。/** * Def

2021-09-14 19:42:02 47

原创 LC 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。提示:1 <= strs.length <= 2000 <= strs[i].length <= 200strs[i] 仅由小写英文字母组成方法一:遍历思路:◇ 首先判断当前字符串是否超出数组第一个字符串界限;◇ 如果没有超出的话,依次判断是否超出之后的数组;◇ 如果超出 或者不想等直接返回当前匹配的值,如果全部匹配,加入当前字符串,下标递增 +1。function l

2021-09-14 19:38:58 55

原创 LC 外观数列

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的

2021-09-14 19:38:47 68

原创 LC 实现 strStr()

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的

2021-09-14 19:37:25 48

原创 LC 字符串转换整数 (atoi)

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。读入下一个字符,直到到达下一个非数字字符或到达输入的结尾

2021-09-14 19:37:07 74

原创 LC 有效的字母异位词

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。思路:◇ 双指针遍历;◇ 找到最开始和最后面的一个为大小写字母或者数字的字符,如果没有则直接返回 true;◇ 如果前指针小于后指针 ,则判断两者是否相同,相同继续,不相同直接返回 false 。isPalindrome(s: string): boolean { var front= 0; var behind = s.length - 1; // 找

2021-09-14 19:36:40 45

原创 LC 有效的字母异位词

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。思路:◇ 如果两个字符串不一样长,一定不是;◇ 遍历两个字符串,将 s 里面有的字符在新的数组中 +1 ,t 里有的字符在数组中 -1;◇ 如果数组中的数有一个不为0 就说明不是 。class Solution { public b

2021-09-14 19:35:54 40

原创 LC 字符串中的第一个唯一字符

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。你可以假定该字符串只包含小写字母。思路:◇ 遍历原字符串,对应字母的键值存入 map 中◇ 再次遍历 map 取出第一个值为 1 的字符串返回◇ !!! 不存在的情况,最后一定要返回 -1 。function firstUniqChar(s: string): number { let map = new Map(); // 遍历原字符串,对应出现键值存入 map 中 for(l

2021-09-14 19:35:42 48

原创 LC 整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。思路:◇◇function reverse(x: number): number { if(x == 0) return 0; let flag = x / Math.abs(x); x = Math.abs(x);

2021-09-14 19:35:22 69

原创 LC 反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。思路:◇ 题目很简单,双指针依次交换两个的值就行了。◇ 时间:O(n),空间O(1);/** Do not return anything, modify s in-place instead.*/reverseString(s:

2021-09-14 19:35:04 37

原创 LC 有效的数独

请你判断一个 9x9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 ‘.’ 表示。注意:一个有效的数独(部分已被填充)不一定是可解的。只需要根据以上规则,验证已经填入的数字是否有效即可。思路:◇ 刚开始因为看错题目,误以为要把整个数独解出来,所以当时懵了很久,后来仔细

2021-09-08 10:46:45 75

原创 LC 两数之和

暴力破解public class Solution { public int[] TwoSum(int[] nums, int target) { for (int i=0; i<nums.Length; i++) { for(int j=i+1; j<nums.Length; j++) { if(nums[i]+nums[j] == target) { return new int[] {i,j}; } } } r

2021-09-08 10:46:07 55

原创 多种单例模式

‘use strict’;/**一般情况下,不建议使用第 2 种和第 3 种懒汉式单例,建议使用第 1 种饿汉式单例,如果项目中明确要使用延时加载那么使用第 5 种静态内存类的单例,如果有序列化反序列化操作可以使用第 6 种单例模式,如果是其它需求可以使用第 4 种 DCL 单例。*//** * 单例类基类 (饿汉式) * * @export * @abstract * @class SingletonBase */export abstract class Hungry

2021-09-08 10:45:44 97

原创 LC 加一

在这里插入代码片

2021-09-08 10:44:27 40

原创 LC 只出现一次的数字

排序,消除异或public class Solution { public int SingleNumber(int[] nums) { int result = 0; for (int i = 0; i < nums.Length; i++) result ^= nums[i]; return result; }}

2021-09-08 10:44:03 43

原创 LC 两个数组的交集 II

排序 + 快慢指针public class Solution { public int[] Intersect(int[] nums1, int[] nums2) { int slow = 0; int quick = 0; List<int> result = new List<int>(); Array.Sort(nums1); Array.S

2021-09-08 10:43:00 37

原创 LC 存在重复元素

暴力public class Solution { public bool ContainsDuplicate(int[] nums) { for (int i=0; i<nums.Length; i++) { for(int j=i+1; j<nums.Length; j++) { if( nums[i] == nums[j] ) return true;

2021-09-08 10:40:40 35

原创 LC 旋转数组

最笨的方法,额外空间public class Solution { public void Rotate(int[] nums, int k) { int[] newarray = new int[nums.Length]; for(int i=0; i<nums.Length; i++) { newarray[i] = nums[i]; } int index = 0; for( int

2021-09-08 10:39:40 42

faceweb-1.zip

本程序实现了基于keras深度学习库,使用tensenflow为底层框架的人脸识别及标识的代码,在此项目中实现了三个功能,第一个是人脸录入,第二个机器进行深度学习和训练,最后人脸标识,只要库完备就可以运行!下载好以后注意里面的路径问题,还有python 要求的库的问题!如有建议,欢迎与我联系

2019-09-20

数字图像处理的多功能软件包

使用python + qt desingher 完成了一个关于图像处理的多功能软件包, 可以实现哈哈镜的制作、canny算子边缘检测、多功能,开闭运算,还有基本的如 旋转放大等基础图像处理的方法

2019-09-08

ffmpeg_video_encoder.zip

本程序实现了YUV像素数据编码为视频码流(H.265,H264,MPEG2,VP8等等)。 是最简单的FFmpeg视频编码方面的教程。 它包含以下两个子项目: simplest_ffmpeg_video_encoder:最简单的基于FFmpeg的视频编码器。使用libavcodec和libavformat编码并且封装视频。

2019-06-02

VS SQL成绩管理系统 C#

可以进行基本的查询,插入,和删除,还有管理员和管理员注册系统,适合新手入门,可以运行

2018-12-21

Python入门资料及编程题整理

python新手必备 。

2018-12-11

空空如也

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

TA关注的人

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