自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 机器学习随笔

AlexNet采用带标记的数据进行训练,而在当时,普遍采用希望采用无监督的方法,开创了新方向。当然,无监督学习应该更符合真正的“人工智能”,通过大模型自己提取特征–书读百遍,其意自现。近两年BERT和GAN的出现才又回到无监督方向上。...

2021-11-30 20:16:42 130

原创 319. 灯泡开关--Python

初始时有 n 个灯泡处于关闭状态。第一轮,你将会打开所有灯泡。接下来的第二轮,你将会每两个灯泡关闭一个。第三轮,你每三个灯泡就切换一个灯泡的开关(即,打开变关闭,关闭变打开)。第 i 轮,你每 i 个灯泡就切换一个灯泡的开关。直到第 n 轮,你只需要切换最后一个灯泡的开关。找出并返回 n 轮后有多少个亮着的灯泡。def bulbSwitch(self, n: int) -> int: # 大巧不工:只有完全平方数的开关次数为奇数 return int(math.sqrt(n))来源:力

2021-11-21 10:15:24 756 1

原创 391. 完美矩形--Python

给你一个数组 rectangles ,其中 rectangles[i] = [xi, yi, ai, bi] 表示一个坐标轴平行的矩形。这个矩形的左下顶点是 (xi, yi) ,右上顶点是 (ai, bi) 。如果所有矩形一起精确覆盖了某个矩形区域,则返回 true ;否则,返回 false 。def isRectangleCover(self, rectangles: List[List[int]]) -> bool: # 正方形四个点的初始化 minX, minY, maxA, m

2021-11-21 10:10:44 436

原创 12. 整数转罗马数字--Python

罗马数字包含以下七种字符: 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-11-21 09:58:29 275

原创 563. 二叉树的坡度--Python

给定一个二叉树,计算整个树的坡度 。一个树的节点的坡度定义即为,该节点左子树的节点之和和右子树节点之和的差的绝对值 。如果没有左子树的话,左子树的节点之和为 0 ;没有右子树的话也是一样。空结点的坡度是 0 。整个树的坡度就是其所有节点的坡度之和。class TreeNode: def __init__(self, val=0, left=None, right=None): self.val = val self.left = left se

2021-11-21 09:55:31 972

原创 594. 最长和谐子序列--Python

和谐数组是指一个数组里元素的最大值和最小值之间的差别 正好是 1 。现在,给你一个整数数组 nums ,请你在所有可能的子序列中找到最长的和谐子序列的长度。数组的子序列是一个由数组派生出来的序列,它可以通过删除一些元素或不删除元素、且不改变其余元素的顺序而得到。输入:nums = [1,3,2,2,5,2,3,7]输出:5解释:最长的和谐子序列是 [3,2,2,2,3]def findLHS(self, nums: List[int]) -> int: arr = Cou

2021-11-21 09:38:18 170

原创 268. 丢失的数字--python

给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。方法一# 异或def missingNumber_1(self, nums: List[int]) -> int: result = 0 for i, num in enumerate(nums): result ^= i ^ num return result ^ len(nums)方法二# 高斯求和def missingNumb

2021-11-07 16:39:33 525

原创 1218. 最长定差子序列--python

给你一个整数数组 arr 和一个整数 difference,请你找出并返回 arr 中最长等差子序列的长度,该子序列中相邻元素之间的差等于 difference 。子序列 是指在不改变其余元素顺序的情况下,通过删除一些元素或不删除任何元素而从 arr 派生出来的序列。def longestSubsequence(self, arr: List[int], difference: int) -> int: length = 0 temp = [0] * 10 ** 5 fo

2021-11-07 16:37:12 380

原创 367. 有效的完全平方数--python

给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。进阶:不要 使用任何内置的库函数,如 sqrt 。def isPerfectSquare(self, num: int) -> bool: if num == 1: return True left = 0 right = num while left <= right: # 折半查找 mid = (

2021-11-07 16:34:38 241

原创 6. Z 字形变换--python

def convert(self, s: str, numRows: int) -> str: if numRows == 1: return s # 先分成n份 res = [""] * numRows i = 0 flag = -1 for char in s: res[i] += char # 质变:触底或触顶反弹 if i == 0 or i == numRows - 1: .

2021-11-07 16:32:18 92

原创 237. 删除链表中的节点--python

请编写一个函数,用于 删除单链表中某个特定节点 。在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 。题目数据保证需要删除的节点 不是末尾节点 。示例输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:指定链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9def deleteNode(self, node): """ :type node: ListNod

2021-11-07 16:21:53 301

原创 575. 分糖果--Python

Alice 有 n 枚糖,其中第 i 枚糖的类型为 candyType[i] 。Alice 注意到她的体重正在增长,所以前去拜访了一位医生。医生建议 Alice 要少摄入糖分,只吃掉她所有糖的 n / 2 即可(n 是一个偶数)。Alice 非常喜欢这些糖,她想要在遵循医生建议的情况下,尽可能吃到最多不同种类的糖。给你一个长度为 n 的整数数组 candyType ,返回: Alice 在仅吃掉 n / 2 枚糖的情况下,可以吃到糖的最多种类数。示例 1:输入:candyType = [1,1,2,

2021-11-07 16:19:25 476

原创 260. 只出现一次的数字 III -- python

给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?第一种:哈希表 def singleNumber(self, nums: List[int]) -> List[int]: dictionary = Counter(nums) return [num for num, occ in dictionary.items

2021-10-31 19:24:09 171

原创 3. 无重复字符的最长子串 -- python

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串的长度。示例:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。class Solution: def lengthOfLongestSubstring(self, s: str) -> int: result = 0 length = len(s) res = set() right = -1

2021-10-29 19:26:23 475

原创 13. 罗马数字转整数 -- Python

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

2021-10-27 10:31:06 166

原创 496. 下一个更大元素 I -- Python

给你两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。请你找出 nums1 中每个元素在 nums2 中的下一个比其大的值。nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 。stack = []res = {}for num in reversed(nums2): while stack and num > stack[-1]:

2021-10-26 19:13:12 95

原创 240.搜索二维矩阵 II -- Python

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:·每行的元素从左到右升序排列。·每列的元素从上到下升序排列。m = len(matrix) n = len(matrix[0]) for i in range(m): if matrix[i][0] <= target and matrix[i][n - 1] >= target: for j in matrix[i]:

2021-10-25 20:34:37 111

原创 LeetCode--105. 从前序与中序遍历序列构造二叉树

在理解前序和中序遍历的特点和相互之间的关联后,这道题的思路并不难实现。public static TreeNode buildTree(int[] preorder, int[] inorder) { //前期的剪枝 if (preorder == null) { return null; } int length = preorder.length; if (length == 1) { .

2021-06-02 21:39:10 43

原创 LeetCode--90. 子集 II

题目给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。勉强说得过去

2021-05-17 21:10:15 59

原创 LeetCode--88. 合并两个有序数组

题目:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。...

2021-05-15 21:06:13 52

原创 LeetCode--79. 单词搜索

***题目:***给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。思路简单,上下左右进行尝试,但是耗时较高,可以优化。public static void main(String[] args) { System.out.println(ex

2021-05-14 21:35:24 53

原创 LeetCode--78. 子集

该思路易于理解,但时间复杂度不行,后续可以利用回溯算法优化。public static void main(String[] args) { //[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] System.out.println(subsets(new int[]{1, 2, 3})); //[[],[0]] System.out.println(subsets(new int[]{0})); .

2021-05-14 21:25:05 69

原创 LeetCode--74. 搜索二维矩阵

剪枝可以对特殊案例进行处理public class Q74_Search_a_2D_Matrix { public static void main(String[] args) { System.out.println(searchMatrix(new int[][]{{1, 3, 5, 7}, {10, 11, 16, 20}, {23, 30, 34, 60}}, 3)); System.out.println(searchMatrix(new int[][.

2021-05-12 21:23:03 62

原创 LeetCode--66. 加一

没太大难度,仅需注意9+1后的进位情况public class Q66_Plus_One { public static void main(String[] args) { System.out.println(Arrays.toString(plusOne(new int[]{1, 2, 3}))); System.out.println(Arrays.toString(plusOne(new int[]{4, 3, 2, 1}))); Sys.

2021-05-12 21:20:03 82

原创 LeetCode--64. 最小路径和

和63题一样,都是从第62题变化而来,难度不大,记住每一个点的最短路径为“到该点的最小数字和”+“该点的数字”即可。public class Q64_Minimum_Path_Sum { public static void main(String[] args) { System.out.println(minPathSum(new int[][]{{1, 3, 1}, {1, 5, 1}, {4, 2, 1}})); //7 System.out.prin.

2021-05-11 21:58:05 65 1

原创 LeetCode--63. 不同路径 II

这一题由62题变化而来,如果理解了第62题,可以说这一题毫无难度,只需将数组中阻塞的点可通行的路线数量设为1即可。public class Q63_Unique_Paths_II { public static void main(String[] args) { System.out.println(uniquePathsWithObstacles(new int[][]{{0, 0, 0}, {0, 1, 0}, {0, 0, 0}})); System.o..

2021-05-11 21:48:58 86 1

空空如也

空空如也

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

TA关注的人

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