leetcode 61~70 学习经历

news2025/2/25 0:08:02

leetcode 61~70 学习经历

  • 61. 旋转链表
  • 62. 不同路径
  • 63. 不同路径 II
  • 64. 最小路径和
  • 65. 有效数字
  • 66. 加一
  • 67. 二进制求和
  • 68. 文本左右对齐
  • 69. x 的平方根
  • 70. 爬楼梯
  • 小结

61. 旋转链表

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

示例 1:
输入:head = [1,2,3,4,5], k = 2
输出:[4,5,1,2,3]
示例 2:
输入:head = [0,1,2], k = 4
输出:[2,0,1]

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/rotate-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

额,示例里,有个链表一共才三个长度,他旋转了4次。。。。嗯,恶意满满的提示,如果真要慢慢旋转得到结果,那么直接给个2**31次旋转。。。。嘿嘿

老办法,弄到数组里,然后根据k直接切断原来的链,并到新的位置上去

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def rotateRight(self, head: Optional[ListNode], k: int) -> Optional[ListNode]:
        if not head or not head.next:
            return head
        t = ListNode(0,head)
        r = []
        while head:
            r.append(head)
            head = head.next
        k = k % len(r)
        r[-1].next = t.next
        t.next = r[-k]
        r[-k-1].next = None
        return t.next

在这里插入图片描述

62. 不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。
问总共有多少条不同的路径?

示例 1:
在这里插入图片描述
输入:m = 3, n = 7
输出:28
示例 2:
输入:m = 3, n = 2
输出:3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。

  1. 向右 -> 向下 -> 向下
  2. 向下 -> 向下 -> 向右
  3. 向下 -> 向右 -> 向下

示例 3:
输入:m = 7, n = 3
输出:28
示例 4:
输入:m = 3, n = 3
输出:6

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/unique-paths
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

猛一看到这题,老顾以为是个组合题,就是拿不准怎么计算组合,试了两次,没弄明白应该用什么公式

然后看到示例里,3*7矩阵有28种路径,于是老顾就自己用手比划各个路径,比划着比划着,比划出一个想法
在这里插入图片描述
标注1的地方,都是只有一种办法到达的地方
在这里插入图片描述
然后,每一个其他位置可能到达的方法,是左边和上边到达的可能性的和,那么右下角的可能性是多少?

哦哦,难怪题目给了个这个图,用二维表格做啊

class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        dp = [[0 for _ in range(n + 1)] for _ in range(m)]
        dp[0] = [1] * (n + 1)
        for i in range(1,m):
            for j in range(1,n + 1):
                dp[i][j] = dp[i - 1][j] + dp[i][j - 1]
        return dp[m - 1][n]

在这里插入图片描述
啊。。。这个成绩。。。估计真有大佬用公式计算的?抄答案去!

# 以下内容抄自 leetcode 第62题 python 20ms 答案
class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        if m >= n:
            # Cm+n-2 n-1
            fenzi,fenmu1,fenmu2 = 1,1,1
            for i in range(2,m+n-1):
                fenzi = i*fenzi
            for i in range(2,m):
                fenmu1 = i*fenmu1
            for i in range(2,n):
                fenmu2 = i*fenmu2
            result = fenzi / (fenmu1 * fenmu2)
            return int(result)
        else:
            # Cm+n-2 m-1
            fenzi,fenmu1,fenmu2 = 1,1,1
            for i in range(2,m+n-1):
                fenzi = i*fenzi
            for i in range(2,n):
                fenmu1 = i*fenmu1
            for i in range(2,m):
                fenmu2 = i*fenmu2
            result = fenzi / (fenmu1 * fenmu2)
            return int(result)

还真有组合公式,c(m+n-2,max(m,n)-1)
嗯,按这个办法写一版看看

class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        def P(n):
            if n < 2:
                return 1
            return n * P(n - 1)
        def C(m,n):
            return P(m)/P(m-n)/P(n)
        return int(C(m + n - 2,max(m,n) - 1))

咦,有用例计算错误了?
在这里插入图片描述
哦。。。。写错了一个函数

class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        def P(n):
            if n < 2:
                return 1
            return n * P(n - 1)
        def C(m,n):
            return P(m)/P(m-n)/P(n)
        return int(C(m + n - 2,min(m,n) - 1)) # 这里取 m,n 里小的那个。。。

在这里插入图片描述

嗯,果然有组合公式,老顾就吃亏在没上过学了

63. 不同路径 II

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。
现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?
网格中的障碍物和空位置分别用 1 和 0 来表示。

示例 1:
在这里插入图片描述
输入:obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
输出:2
解释:3x3 网格的正中间有一个障碍物。
从左上角到右下角一共有 2 条不同的路径:

  1. 向右 -> 向右 -> 向下 -> 向下
  2. 向下 -> 向下 -> 向右 -> 向右

示例 2:
在这里插入图片描述
输入:obstacleGrid = [[0,1],[0,0]]
输出:1

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/unique-paths-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

哦呦,这次总不能再用组合来计算了吧,这次总该有二维表了吧

class Solution:
    def uniquePathsWithObstacles(self, obstacleGrid: List[List[int]]) -> int:
        r = [[0 if col == 0 else -1 for col in row] for row in obstacleGrid]
        n = len(r)
        m = len(r[0])
        for i in range(m):
            if r[0][i] == -1:
                break
            r[0][i] = 1
        for i in range(n):
            if r[i][0] == -1:
                break
            r[i][0] = 1
        for i in range(1,n):
            for j in range(1,m):
                if r[i][j] != -1:
                    r[i][j] = max(0,r[i - 1][j]) + max(0,r[i][j - 1])
        return max(0,r[n - 1][m - 1])

在这里插入图片描述
思路一样简单,有障碍的地方标记为-1,然后求和的时候-1当0计算就好

64. 最小路径和

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。

示例 1:
在这里插入图片描述
输入:grid = [[1,3,1],[1,5,1],[4,2,1]]
输出:7
解释:因为路径 1→3→1→1→1 的总和最小。
示例 2:
输入:grid = [[1,2,3],[4,5,6]]
输出:12

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-path-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

还好只能向右或向下移动,否则就成了迷宫题了,那难度。。。哎,已经被坑掉过一回了

class Solution:
    def minPathSum(self, grid: List[List[int]]) -> int:
        r = []
        m,n = len(grid),len(grid[0])
        def path(x,y,v):
            v += grid[x][y]
            if x < m - 1:
                path(x + 1,y,v)
            if y < n - 1:
                path(x,y + 1,v)
            if x == m - 1 and y == n - 1:
                r.append(v)
        path(0,0,0)
        return min(r)

嗯,思路没问题,暴力穷举。。。。然后超时了。。。。

过了一段时间,突然想起来,前两题都用二维数组完成的,这次呢?为什么不用数组完成,每一个位置都和前两个位置中,小一点的相加不就是了?

class Solution:
    def minPathSum(self, grid: List[List[int]]) -> int:
        m,n = len(grid),len(grid[0])
        dp = [[0 for _ in range(n)] for _ in range(m)]
        dp[0][0] = grid[0][0]
        for i in range(1,n): # 第一行只有一种办法到达,所以,每个格子的值是前边所有数字的和加自己
            dp[0][i] = dp[0][i - 1] + grid[0][i]
        for i in range(1,m): # 第一列只有一种办法到达,所以,每个格子的值是前边所有数字的和加自己
            dp[i][0] = dp[i - 1][0] + grid[i][0]
        for i in range(1,m): # 每个格子都有上边和左边两个位置可以进入,选其中小的作为入口,加自己
            for j in range(1,n):
                dp[i][j] = grid[i][j] + min(dp[i - 1][j],dp[i][j - 1])
        return dp[-1][-1]

在这里插入图片描述
这里用了一个新数组,这次不用新数组看看

class Solution:
    def minPathSum(self, grid: List[List[int]]) -> int:
        m,n = len(grid),len(grid[0])
        for i in range(1,n):
            grid[0][i] += grid[0][i - 1]
        for i in range(1,m):
            grid[i][0] += grid[i - 1][0]
        for i in range(1,m):
            for j in range(1,n):
                grid[i][j] += min(grid[i - 1][j],grid[i][j - 1])
        return grid[-1][-1]

在这里插入图片描述
内存消耗降低了一点点。。。提升不大

65. 有效数字

有效数字(按顺序)可以分成以下几个部分:

一个 小数 或者 整数
(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数

小数(按顺序)可以分成以下几个部分:

(可选)一个符号字符(‘+’ 或 ‘-’)
下述格式之一:

至少一位数字,后面跟着一个点 ‘.’
至少一位数字,后面跟着一个点 ‘.’ ,后面再跟着至少一位数字
一个点 ‘.’ ,后面跟着至少一位数字

整数(按顺序)可以分成以下几个部分:

(可选)一个符号字符(‘+’ 或 ‘-’)
至少一位数字

部分有效数字列举如下:[“2”, “0089”, “-0.1”, “+3.14”, “4.”, “-.9”, “2e10”, “-90E3”, “3e+7”, “+6e-1”, “53.5e93”, “-123.456e789”]
部分无效数字列举如下:[“abc”, “1a”, “1e”, “e3”, “99e2.5”, “–6”, “-+3”, “95a54e53”]
给你一个字符串 s ,如果 s 是一个 有效数字 ,请返回 true 。

示例 1:
输入:s = “0”
输出:true
示例 2:
输入:s = “e”
输出:false
示例 3:
输入:s = “.”
输出:false

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/valid-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

额。。。。正则能用不?

class Solution:
    def isNumber(self, s: str) -> bool:
        if re.match('^(?=.*\d)(?=[\d\.eE+-]+$)[+-]?(?=[^eE]*\d)\d*(\.\d*)?([eE][+-]?\d+)?$',s):
            return True
        return False

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后到 c ++ 里试了试这个正则。。。超时了,查了查资料,没有找到关于 c++ 正则断言的部分,也不知道是不是因为这个

使用正则就简单了,组织一下规则即可,如果用代码实现,那就一大片了。。。。

class Solution:
    def isNumber(self, s: str) -> bool:
        c = set(s.lower())
        d = {'0','1','2','3','4','5','6','7','8','9'}
        if len(c - {'+','-','.','e','E'}.union(d)) > 0: # 正则 (?=[\d\.eE+-]+$) 部分
            return False
        if len(c & d) == 0: # 正则 (?=.*\d) 部分
            return False
        fh,fd = 0,0 # 符号,浮点数量
        if s[0] in {'+','-'}: # [+-]?
            fh = 1
            s = s[1:]
        pos = 0
        while pos < len(s):   # (?=[^eE]*\d)\d*(\.\d*)?
            if s[pos] in {'e','E'}: # 碰到 e 跳出
                break
            if s[pos] == '.':
                fd += 1
                if fd > 1:  # 如果浮点数量过多
                    return False
            if s[pos] in {'+','-'}: # 如果再次出现符号
                return False
            pos += 1
        if pos - fd == 0: # 如果长度减去浮点数量为0,表示无数字
            return False
        if pos < len(s):  # ([eE][+-]?\d+)?
            s = s[pos + 1:]
            if len(s) == 0: # e 后边无内容
                return False
            if s[0] in {'+','-'}: # 符号移除
                s = s[1:]
            if len(set(s) & d) == 0 or len(set(s) - d) > 0: # 如果无数字,或有数字外的内容
                return False
        return True
        #if re.match('^(?=.*\d)(?=[\d\.eE+-]+$)[+-]?(?=[^eE]*\d)\d*(\.\d*)?([eE][+-]?\d+)?$',s):
        #    return True
        #return False

在这里插入图片描述
不用正则实现了一遍,行吧,成绩能接受,不过这实现过程,真不如直接写正则快,正则我就一两分钟就搞定的事。。。。

看了看这个题的题解。。。。什么是状态机?我不造啊!什么是表驱动法?我不懂啊!仔细看了看,大概理解一点
根据录入的数字,给一个状态码,根据状态码进入到相应的行,再拿一个字符,得到这行相应的状态码,如果 -1 就不合法,其他的数字都是分支。。。。大概。行吧,也是个路子

66. 加一

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。

示例 1:
输入:digits = [1,2,3]
输出:[1,2,4]
解释:输入数组表示数字 123。
示例 2:
输入:digits = [4,3,2,1]
输出:[4,3,2,2]
解释:输入数组表示数字 4321。
示例 3:
输入:digits = [0]
输出:[1]

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/plus-one
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

额,你就当这个数组是个正常的数字,比如 [4,3,2,1],你就当他是 4321,然后加1,然后再放成数组,最多考个进位,连续进位,及最后一次进位后跳出

class Solution:
    def plusOne(self, digits: List[int]) -> List[int]:
        n = len(digits)
        digits[-1] += 1
        for i in range(n):
            if digits[n - i - 1] > 9:
                digits[n - i - 1] = 0
                if i < n - 1:
                    digits[n - i - 2] += 1
                else:
                    return [1] +digits
            else:
                break
        return digits

在这里插入图片描述

67. 二进制求和

给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。

示例 1:
输入:a = “11”, b = “1”
输出:“100”
示例 2:
输入:a = “1010”, b = “1011”
输出:“10101”

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/add-binary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

e…这个有啥好说的,注意进位就好,再有就是注意补位

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        n1,n2 = len(a),len(b)
        s = ''
        c3 = '0' # 进位记录
        for i in range(max(n1,n2)):
            c1 = a[-i - 1] if i < n1 else '0' # a 位
            c2 = b[-i - 1] if i < n2 else '0' # b 位
            print(c1,c2,c3)
            if c1 == c2 == '0':
                s = c3 + s
                c3 = '0'
            elif c1 != c2:
                if c3 == '0':
                    s = '1' + s
                else:
                    s = '0' + s
                    c3 = '1'
            else:
                s = c3 + s
                c3 = '1'
        if c3 == '1':
            s = c3 + s
        return s

在这里插入图片描述
在这里插入图片描述
我预估。。。有浑水摸鱼的家伙,所以我直接开始作弊

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        return str(bin(int(a,2)+int(b,2)))[2:]

在这里插入图片描述

68. 文本左右对齐

给定一个单词数组 words 和一个长度 maxWidth ,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本。
你应该使用 “贪心算法” 来放置给定的单词;也就是说,尽可能多地往每行中放置单词。必要时可用空格 ’ ’ 填充,使得每行恰好有 maxWidth 个字符。
要求尽可能均匀分配单词间的空格数量。如果某一行单词间的空格不能均匀分配,则左侧放置的空格数要多于右侧的空格数
文本的最后一行应为左对齐,且单词之间不插入额外的空格。

注意:
单词是指由非空格字符组成的字符序列。
每个单词的长度大于 0,小于等于 maxWidth。
输入单词数组 words 至少包含一个单词。

示例 1:
输入: words = [“This”, “is”, “an”, “example”, “of”, “text”, “justification.”], maxWidth = 16
输出:

[
  "This    is    an",
  "example  of text",
  "justification.  "
]

示例 2:
输入:words = [“What”,“must”,“be”,“acknowledgment”,“shall”,“be”], maxWidth = 16
输出:

[
 "What   must   be",
 "acknowledgment  ",
 "shall be        "
]

解释: 注意最后一行的格式应为 "shall be " 而不是 “shall be”,
因为最后一行应为左对齐,而不是左右两端对齐。
第二行同样为左对齐,这是因为这行只包含一个单词。
示例 3:
输入:words = [“Science”,“is”,“what”,“we”,“understand”,“well”,“enough”,“to”,“explain”,“to”,“a”,“computer.”,“Art”,“is”,“everything”,“else”,“we”,“do”],maxWidth = 20
输出:

[
 "Science  is  what we",
 "understand      well",
 "enough to explain to",
 "a  computer.  Art is",
 "everything  else  we",
 "do                  "
]

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/text-justification
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

很简单的题目,结果提交失败三次,没注意审题啊,重点部分我加粗了。。。ε=(´ο`*)))唉

class Solution:
    def fullJustify(self, words: List[str], maxWidth: int) -> List[str]:
        r = []
        g = []
        def addSpace(arr,w):
            if len(arr) == 1:
                return arr[0] + ' ' * (w - len(arr[0]))
            s = w - sum([len(n) for n in arr])
            b = s // (len(arr) - 1)
            f = s - b * (len(arr) - 1)
            print(s,b,f)
            return (' ' * b).join([arr[n] if n >= f else arr[n] + ' ' for n in range(len(arr))])
            
        for w in words:
            if len(g) == 0:
                g.append(w)
                continue
            l = sum([len(n) + 1 for n in g])
            if l + len(w) > maxWidth:
                r.append(addSpace(g,maxWidth))
                g = [w]
            else:
                g.append(w)
        g = ' '.join(g)
        r.append(g + ' ' * (maxWidth - len(g)))
        return r

在这里插入图片描述
调整一下计算顺序

class Solution:
    def fullJustify(self, words: List[str], maxWidth: int) -> List[str]:
        r = []
        g = []
        l = 0
        for w in words:
            wl = len(w)
            if len(g) == 0:
                g.append(w)
                l += wl + 1
                continue
            if l + wl > maxWidth:
                if len(g) == 1:
                    r.append(g[0] + ' ' * (maxWidth - l + 1))
                else:
                    (maxWidth - wl + 1) % (len(g) - 1)
                    r.append((' ' * ((maxWidth - l + len(g)) // (len(g) - 1))).join([g[n] + ' ' if n < (maxWidth - l + len(g)) % (len(g) - 1) else g[n] for n in range(len(g))]))
                g = [w]
                l = wl + 1
            else:
                g.append(w)
                l += wl + 1
        r.append(' '.join(g) + ' ' * (maxWidth - l + 1))
        return r

在这里插入图片描述
哦吼,进入头部了,看了看其他20ms的答案,不能说一模一样,只能说没啥哈别

69. x 的平方根

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。
由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。

示例 1:
输入:x = 4
输出:2
示例 2:
输入:x = 8
输出:2
解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/sqrtx
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

哦,找小于等于自己平方根的最大整数,明显又是二分查找了,就看最后的跳出条件了

class Solution:
    def mySqrt(self, x: int) -> int:
        if x == 0:
            return 0
        if x < 4:
            return 1
        l,r = 2,x // 2
        while l < r:
            m = (l + r) // 2
            if l == m:
                return r if r * r <= x else l
            if m * m == x:
                return m
            elif m * m > x:
                r = m - 1
            else:
                l = m
        return l

在这里插入图片描述

这道题是用手机在地铁上码出来的,真费劲,leetcode手机版本不知道有什么问题,有时候不点提交,他也一直蹦最后一次的结果,还不好关掉,偶尔会重置代码,所有代码全都白费

话说,手机截图这么大的么?

70. 爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1:
输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。

  1. 1 阶 + 1 阶
  2. 2 阶

示例 2:
输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。

  1. 1 阶 + 1 阶 + 1 阶
  2. 1 阶 + 2 阶
  3. 2 阶 + 1 阶

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/climbing-stairs
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

又一个考组合公式的,那就来吧

。。。。几分钟过去了,自己差点把自己绕晕了。。。公式差点就没拼出来

class Solution:
    def climbStairs(self, n: int) -> int:
        def P(n):
            if n < 2:
                return 1
            r = 2
            for i in range(3,n+1):
                r *= i
            return r
        def C(m,n):
            return P(m)/P(m - n)/P(n)
        if n in [0,1,2]:
            return n
        s = 0
        for i in range(n // 2 + 1):
            s += C(n - i,n - i * 2)
        return int(s)

在这里插入图片描述
其实很容易理解的

1 ,只有1种 C(1,0)
2,只有 1 1,2 这两种,分别是 C(2,0) + C(1,0),两个1相加
3,C(3,0)+C(2,1) ,1+2=3,C(3,0)表示走了3步,C(2,1)表示走了两步,其中一步走的是一阶
4,C(4,0)+C(3,2)+C(2,0)
5,C(5,0)+C(4,3)+C(3,1) 加起来就是8种

C(5,0) 11111  1种
C(4,3) 1112   4种
       1121
       1211
       2111
C(3,1) 122    3种
       212
       221

小结

这次10题难度偏低啊,除了最小路径和稍微脑抽卡了一下,其他的感觉都很顺手就完成了,嗯文本对齐的那个要耐心点,没好好读题弄错了好几次

在这里插入图片描述
有效数字那个评价是困难。。。。嗯,怎么说呢,c++或c可能是,其他语言未必了

总的来说,还是评价有点名不符实

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/380272.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【论文精读】Benchmarking Deep Learning Interpretability in Time Series Predictions

【论文精读】Benchmarking Deep Learning Interpretability in Time Series Predictions Abstract Saliency methods are used extensively to highlight the importance of input features in model predictions. These methods are mostly used in vision and language task…

嵌入式 Linux多进程

目录 一、Linux进程概述 1、进程标识 2、进程的运行身份 3、进程的状态 4、Linux下进程的结果及管理 5、一些进程相关信息&相关命令 进程process&#xff1a; 进程相关命令&#xff1a; 二、Linux进程创建与控制 1、fork进程创建函数 2、进程的终止 3、wait和wa…

react setState学习记录

react setState学习记录1.总体看来2.setState的执行是异步的3.函数式setState1.总体看来 (1). setState(stateChange, [callback])------对象式的setState 1.stateChange为状态改变对象(该对象可以体现出状态的更改) 2.callback是可选的回调函数, 它在状态更新完毕、界面也更新…

【微信小程序】-- WXSS 模板样式- 全局样式和局部样式(十四)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…

taobao.opensecurity.isv.uid.get( 获取open security uid for isv )

&#xffe5;免费不需用户授权 根据 open_uid 获取 open_uid_isv 用于同一个 isv的多个app间数据关联 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 点击获取key和secret 请求示例 TaobaoClient client new DefaultTaobaoClient(url, a…

你想要的Android性能优化系列:启动优化 !

App启动优化为什么要做App的启动优化&#xff1f;网页端存在的一个定律叫8秒定律&#xff1a;即指用户访问一个网站时&#xff0c;如果等待打开的时间超过8秒&#xff0c;超过70%的用户将会放弃等待。同样的&#xff0c;移动端也有一个8秒定律&#xff1a;如果一个App的启动时间…

华为OD机试题【乱序整数序列两数之和绝对值最小】用 C++ 编码,速通 (2023.Q1)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明乱序整…

嵌入式学习笔记——概述

嵌入式系统概述前言“嵌入式系统”概念1.是个啥&#xff1f;2.可以干啥&#xff1f;3.有哪些入坑方向&#xff1f;4.入坑后可以有多少薪资&#xff1f;单片机1.什么是单片机&#xff1f;2.架构简介3.基于ARM架构的单片机结构简介总结前言 断更很长时间了&#xff0c;写博客确实…

【Leedcode】栈和队列必备的面试题(第四期)

【Leedcode】栈和队列必备的面试题&#xff08;第四期&#xff09; 文章目录【Leedcode】栈和队列必备的面试题&#xff08;第四期&#xff09;一、题目二、思路图解1.声明结构体2.循环链表开辟动态结构体空间3.向循环队列插入一个元素4.循环队列中删除一个元素5. 从队首获取元…

STM32C0介绍(1)----概述

概述 STM32C0系列微控制器是意法半导体公司推出的一款低功耗、高性能的微控制器产品。它们被设计用于需要小型、低功耗和高度可集成的应用程序&#xff0c;如传感器、消费品、电池供电设备、家庭自动化和安全等应用。该系列的微控制器采用ARM Cortex-M0内核&#xff0c;具有丰…

软件测试之缺陷

缺陷 1. 软件缺陷的概述 1.1 软件缺陷定义 软件缺陷, 通常又被叫做bug或者defect, 即为软件或程序中存在的某种破坏正常运行能力的问题、错误,其存在会导致软件产品在某种程度上不能满足用户的需求. 软件缺陷是指存在于软件(程序、数据、文档中的)那些不符合用户需求的问题.…

Ubuntu 交叉编译工具链安装

Ubuntu 交叉编译工具链安装 1 交叉编译器安装 ARM 裸机、Uboot 移植、Linux 移植这些都需要在 Ubuntu 下进行编译&#xff0c;编译就需要编译器&#xff0c;我们在第三章“Linux C 编程入门”里面已经讲解了如何在 Liux 进行 C 语言开发&#xff0c;里面使用 GCC 编译器进行代…

如何使用bomber扫描软件物料清单(SBOM)以查找安全漏洞

关于bomber bomber是一款针对软件物料清单&#xff08;SBOM&#xff09;的安全漏洞扫描工具&#xff0c;广大研究人员可以通过该工具扫描和检测软件物料清单&#xff08;SBOM&#xff09;。 当你向一家供应商索要了他们的一个封闭源代码产品的软件材料清单&#xff0c;而他们…

Spring6全面详解

Spring6全面详解 自2022年11月&#xff0c;Spring6正式发布。在Spring6中&#xff0c;对于JDK的要求最低为 17。&#xff08;17 - 19&#xff09; 部分文本摘抄于尚硅谷视频&#xff08;bilibili&#xff09;做了一定的排版和个人的理解。如果不是很熟悉&#xff0c;可以去看 …

ABAP 辨析 标准表|排序表|哈希表

1、文档介绍 本文档将介绍内表的区别和用法&#xff0c;涉及标准表、排序表、哈希表 2、用法与区别 2.1、内表种类 内表顶层为任意表&#xff0c;任意表分为索引表和哈希表&#xff0c;索引表又可分为标准表和排序表&#xff0c;结构如图&#xff1a; 2.2、内表用法 2.2.1…

GeoTools 存在 sql 注入漏洞

漏洞描述 GeoTools 是一个用于处理地理空间数据&#xff08;如地理信息系统: GIS&#xff09;的开源代码库&#xff0c;并且支持 OGC 过滤器表达式语言的解析和编码。PostGIS是PostgreSQL数据库的扩展程序&#xff0c;增加了数据库对地理对象的支持。PostGIS DataStore 为GeoT…

Android Framework-操作系统基础

最近在看《深入理解Android内核设计思想&#xff08;第2版&#xff09;》&#xff0c;个人感觉很不错&#xff0c;内容很多&#xff0c;现将书里个人认为比较重要的内容摘录一下&#xff0c;方便后期随时翻看。 计算机体系结构 硬件是软件的基石&#xff0c;所有的软件功能最…

【蓝桥杯嵌入式】点亮LED灯,流水灯的原理图解析与代码实现——STM32

&#x1f38a;【蓝桥杯嵌入式】专题正在持续更新中&#xff0c;原理图解析✨&#xff0c;各模块分析✨以及历年真题讲解✨都在这儿哦&#xff0c;欢迎大家前往订阅本专题&#xff0c;获取更多详细信息哦&#x1f38f;&#x1f38f;&#x1f38f; &#x1fa94;本系列专栏 - 蓝…

不用PS,也能实现抠图的工具

对于非设计专业的同学来说&#xff0c;专门下载 PS 抠图有点大材小用&#xff0c;而且运用 PS 对电脑配置一定要求。不过现在有了更多选择&#xff0c;市面上出现了越来越多的抠图软件&#xff0c;不过越多的抠图软件选择也意味着需要花费时间试错因此本文将给大家推荐 3 款非常…

递归算法(recursion algorithm)

递归算法 什么是递归算法 在过程或者函数里调用自身的算法&#xff1b; 递归算法&#xff08;recursion algorithm&#xff09;&#xff0c;通过重复将问题分解为同类的子问题而解决问题的方法&#xff0c; Java中函数可以通过调用自身来进行递归&#xff0c;大多数编程语句…