leetcode 41~50 学习经历

news2024/11/24 21:03:57

leetcode 41~50 学习经历

  • 41. 缺失的第一个正数
  • 42. 接雨水
  • 43. 字符串相乘
  • 44. 通配符匹配
  • 45. 跳跃游戏 II
  • 46. 全排列
  • 47. 全排列 II
  • 48. 旋转图像
  • 49. 字母异位词分组
  • 50. Pow(x, n)
  • 小结

41. 缺失的第一个正数

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。
请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。

示例 1:
输入:nums = [1,2,0]
输出:3
示例 2:
输入:nums = [3,4,-1,1]
输出:2
示例 3:
输入:nums = [7,8,9,11,12]
输出:1

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

class Solution:
    def firstMissingPositive(self, nums: List[int]) -> int:
       d = set(nums)
       c = {n + 1 for n in range(len(nums) + 1)}
       return sorted(c-d)[0]

在这里插入图片描述
啊这。。。。。。常数级别额外空间是啥意思??就说,我这个内存消耗肯定不过关了呗
然后。。。。看大佬们的答案,全都是一个算法,引用这里的说法https://blog.csdn.net/kexuanxiu1163/article/details/103209554

在这里插入图片描述
在这里插入图片描述
嗯。。。这样就排除了重复数字的干扰。。。。好办法,又学废了一招

42. 接雨水

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。

示例 1:
在这里插入图片描述
输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
输出:6
解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。
示例 2:
输入:height = [4,2,0,3,2,5]
输出:9

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

额。。。。这个题目就是考每个坐标点上的最高可与两侧持平的点事多高,那么,简单暴力的来一次

class Solution:
    def trap(self, height: List[int]) -> int:
        if len(height) < 3: # 少于3个柱子,存不住水
            return 0
        n = len(height)
        arr = [0 for _ in range(n)] # 临时数组,保存每个位置可保持的最高位置
        arr[0] = height[0] # 记录上第一个柱子的高度
        mx = 0
        for i in range(n - 1): # 从第一个柱子开始测量最高点
            arr[i + 1] = max(height[i],height[i + 1],arr[i])
            mx = max(height[i],mx,height[i + 1])  # 并记录下最高点
        for i in range(n - 1,-1,-1): # 将最高点之后的数据清掉,因为要从新计算
            if height[i] == mx:
                break
            arr[i] = 0
        for i in range(n - 1,-1,-1): # 将最高点之后的最高位置从后向前再计算一遍
            if height[i] == mx:
                break
            arr[i - 1] = max(height[i],height[i - 1],arr[i])
        arr[-1] = height[-1] # 记录上最后一根柱子的高度
        return sum([arr[i] - height[i] for i in range(n)]) # 将最高点与原柱子高度相减后求和,就是存量

在这里插入图片描述
明显成绩不佳,继续努力

class Solution:
    def trap(self, height: List[int]) -> int:
        if len(height) < 3:
            return 0
        n,mx = len(height) , max(height)
        arr = [height[_] for _ in range(n)]
        total,first,last = 0 , height.index(mx) , n - height[::-1].index(mx) - 1
        for i in range(first,last + 1):
            total += mx - height[i]
        for i in range(n - 1):
            if height[i] == mx: break
            arr[i + 1] = max(height[i],height[i + 1],arr[i])
            total += arr[i] - height[i]
        for i in range(n - 1,-1,-1):
            if height[i] == mx: break
            arr[i - 1] = max(height[i],height[i - 1],arr[i])
            total += arr[i] - height[i]
        return total

在这里插入图片描述
然后就没思路了,接着抄作业。。。好吧,第11题白做了。。。闹心。。。。

class Solution:
    def trap(self, height: List[int]) -> int:
        if len(height) < 3:
            return 0
        lh,rh,total = height[0],height[-1],0
        l,r = 1,len(height) - 1
        while l <= r:
            if lh < height[l]:
                lh = height[l]
                l += 1
                continue
            if rh < height[r]:
                rh = height[r]
                r -= 1
                continue
            if lh < rh:
                total += lh - height[l]
                l += 1
            elif lh >= rh:
                total += rh - height[r]
                r -= 1
        return total

在这里插入图片描述
从新写得双指针的确块一点了,内存消耗也小一些,ε=(´ο`*)))唉,咋就没想起来呢

43. 字符串相乘

给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
注意:不能使用任何内置的 BigInteger 库或直接将输入转换为整数

示例 1:
输入: num1 = “2”, num2 = “3”
输出: “6”
示例 2:
输入: num1 = “123”, num2 = “456”
输出: “56088”

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

。。。。不转成正数怎么搞???用ascii码计算算不算转整数?这题目考的是啥?

class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        return str(eval('{}*{}'.format(num1,num2)))

在这里插入图片描述
别喷我,我也知道这是作弊了。。。问题是,不转数字,到底怎么算?忍不住看了题解。。。。果然用ascii减出来数字了。。然后,除了没整个数相乘,乘法除法取余都没少用。。。这算什么?后来想了想,也许是乘数被乘数都很大很大,嗯,天文数字那种,计算机肯定溢出的,只好用字符串来保存数据的,也就这种能用到这算法了吧,所以,不是限制乘法除法,是不能直接乘。。。好吧,理解了这个,就从新做吧,难怪评论里全是竖式的说法

class Solution:
    def add(self,x,y):
        if x == '' or x == '0':
            return y
        if y == '' or y == '0':
            return x
        x = x[::-1]
        y = y[::-1]
        r = ''
        n = 0
        for i in range(max(len(x),len(y))):
            a = int(x[i]) if i < len(x) else 0
            b = int(y[i]) if i < len(y) else 0
            r += str((a + b + n) % 10)
            n = (a + b + n) // 10
        if n == 1:
            r += '1'
        return r[::-1]
        
    def multiply(self, num1: str, num2: str) -> str:
        if num1 == '0' or num2 == '0':
            return '0'
        s1 = list(num1)
        s2 = list(num2)
        s = ''
        for i in range(len(s1),0,-1):
            x = int(s1[i - 1])
            xn = len(s1) - i
            for j in range(len(s2),0,-1):
                y = int(s2[j - 1])
                yn = len(s2) - j
                s = self.add(s,str(x * y) + '0' * (xn + yn))
        return s

在这里插入图片描述
。。。。。这是马上超时的节奏了吧。。。。赶紧调整一下进位的计算,不要每次都从个位开始计算

class Solution:
    def add(self,x,y,z):
        if x == '' or x == '0':
            return y + '0' * z
        if y == '' or y == '0':
            return x
        _x = x[::-1] + '0' * (z - len(x))
        y = y[::-1]
        x = _x[z:]
        r = _x[:z]
        n = 0
        for i in range(max(len(x),len(y))):
            a = int(x[i]) if i < len(x) else 0
            b = int(y[i]) if i < len(y) else 0
            r += str((a + b + n) % 10)
            n = (a + b + n) // 10
        if n == 1:
            r += '1'
        return r[::-1]
        
    def multiply(self, num1: str, num2: str) -> str:
        if num1 == '0' or num2 == '0':
            return '0'
        s1 = list(num1)
        s2 = list(num2)
        s = ''
        for i in range(len(s1),0,-1):
            x = int(s1[i - 1])
            xn = len(s1) - i
            for j in range(len(s2),0,-1):
                y = int(s2[j - 1])
                yn = len(s2) - j
                s = self.add(s,str(x * y),xn + yn)
        return s

在这里插入图片描述
总算不会超时边缘疯狂试探了,继续优化

class Solution:
    def add(self,x,y,z):
        if x == '' or x == '0':
            return y + '0' * z
        if y == '' or y == '0':
            return x
        x = '0' * (z - len(x)) + x
        r = x[-z:]
        x = x[:-z]
        x = 0 if len(x) == 0 else x
        return str(int(x)+int(y)) + r
        
    def multiply(self, num1: str, num2: str) -> str:
        if num1 == '0' or num2 == '0':
            return '0'
        s1 = list(num1)
        s2 = list(num2)
        s = ''
        for i in range(len(s1),0,-1):
            x = int(s1[i - 1])
            xn = len(s1) - i
            for j in range(len(s2),0,-1):
                y = int(s2[j - 1])
                yn = len(s2) - j
                s = self.add(s,str(x * y),xn + yn)
        return s

在这里插入图片描述
考虑到每次都是个位数相乘,那么弄一个数组,存放每个位上的乘积之和,最后在数组里再进行进位

class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        if num1 == '0' or num2 == '0':
            return '0'
        s = []
        for i in range(len(num1),0,-1):
            x = ord(num1[i - 1]) - 48
            xn = len(num1) - i
            for j in range(len(num2),0,-1):
                y = ord(num2[j - 1]) - 48
                yn = len(num2) - j
                while len(s) < xn + yn + 1:
                    s.append(0)
                s[xn + yn] += x * y
        n = len(s)
        for i in range(n):
            if s[i] > 9:
                if len(s) == i + 1:
                    s.append(0)
                s[i + 1] += s[i] // 10
                s[i] = s[i] % 10
        return ''.join([str(n) for n in s][::-1])

在这里插入图片描述
终于从新杀进100ms的成绩了。。。。可惜刚刚及格,还得继续

class Solution:
    def multiply(self, num1: str, num2: str) -> str:
        if num1 == '0' or num2 == '0':
            return '0'
        l1,l2 = len(num1),len(num2)
        s = [0 for _ in range(l1 + l2 + 1)]
        for i in range(l1,0,-1):
            x = ord(num1[i - 1]) - 48
            for j in range(l2,0,-1):
                y = ord(num2[j - 1]) - 48
                s[l1 - i + l2 - j] += x * y
        for i in range(l1 + l2 + 1):
            if s[i] > 9:
                s[i + 1] += s[i] // 10
                s[i] = s[i] % 10
        while s[-1] == 0:
            s.pop(-1)
        return ''.join([str(n) for n in s][::-1])

在这里插入图片描述
在这里插入图片描述
额额额。做到这个份上了,还是刚及格的成绩?大佬这么多的么,看我千里眼之术!
在这里插入图片描述
然后,只想爆粗口了,这TNND的20ms到60ms全体掩耳盗铃啊,你 10 ** n,这和直接弄出来 num1*num2有区别么?还是我太实在了。更不要说,eval的,int的更多。。。日了哈士奇了

得嘞,这个题用python完全没有意义,他本身支持的整数范围太离谱了,换个c#的玩
在这里插入图片描述
嗯,这就舒服了。。。。
在这里插入图片描述

44. 通配符匹配

给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘’ 的正则表达式匹配。
‘.’ 匹配任意单个字符
'
’ 匹配零个或多个前面的那一个元素
所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。

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

之前第十题做了个正则匹配的 . 和*,还以为这次会简单点,结果拿第十题的内容直接改了改,一提交都超时了。。。看来思路不能这么简单的延续过来,从新考虑下

在此记录,2023年2月26日写了一地 bug 把老顾自己吞没了,大侠我准备休息一下,回头再来一次

45. 跳跃游戏 II

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。
每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:
0 <= j <= nums[i]
i + j < n
返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。

示例 1:
输入: nums = [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2。
从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。
示例 2:
输入: nums = [2,3,0,1,4]
输出: 2

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

这个题目不能算中等吧,就是在后边范围内找个能跳的最远的点落地就可以了啊

class Solution:
    def jump(self, nums: List[int]) -> int:
        r,i,j,n = 0,0,nums[0],len(nums)
        if n == 1:
            return 0
        while i + j < n - 1:
            mx,pos = 0,0
            for x in range(j):
                if nums[i + x + 1] + x >= mx:
                    mx = nums[i + x + 1] + x
                    pos = x + 1
            i += pos
            j = nums[i]
            r += 1

        return r + 1

在这里插入图片描述
在这里插入图片描述
水题,没什么好说的

46. 全排列

给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。

示例 1:
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
示例 2:
输入:nums = [0,1]
输出:[[0,1],[1,0]]
示例 3:
输入:nums = [1]
输出:[[1]]

提示:
1 <= nums.length <= 6
-10 <= nums[i] <= 10
nums 中的所有整数 互不相同

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

额。。。。这个就是穷举了吧,还有其他办法?

class Solution:
    def permute(self, nums: List[int]) -> List[List[int]]:
        def makeGroup(arr,lst):
            for i in range(len(arr)):
                makeGroup(arr[:i] + arr[i+1:],lst + [arr[i]])
            if len(arr) == 0:
                if lst not in r:
                    r.append(lst)
        r = []
        makeGroup(nums,[])
        return r

在这里插入图片描述
嗯,题里说了,每个数不相同。。。不用 not in 判断。。。

在这里插入图片描述

47. 全排列 II

给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。

示例 1:
输入:nums = [1,1,2]
输出:
[[1,1,2],
[1,2,1],
[2,1,1]]
示例 2:
输入:nums = [1,2,3]
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]

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

嗯,和46题一样,不过这次有重复数字了

class Solution:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        def makeGroup(arr,lst):
            i = 0
            if len(arr) == 0:
                if lst not in r:
                    r.append(lst)
            while i < len(arr):
                makeGroup(arr[:i] + arr[i + 1:],lst + [arr[i]])
                i += 1
        nums.sort()
        r = []
        makeGroup(nums,[])
        return r

在这里插入图片描述
呦。。。意外啊,多了连个用例,用时超出这么多?

那么,这个题的目的就是怎么优化排重了

class Solution:
    def permuteUnique(self, nums: List[int]) -> List[List[int]]:
        def makeGroup(arr,lst):
            i = 0
            if len(arr) == 1:
                r.append(lst + [arr[0]])
            while i < len(arr):
                while i > 0 and i < len(arr) and arr[i] == arr[i - 1]:
                    i += 1
                if i == len(arr):
                    break
                makeGroup(arr[:i] + arr[i + 1:],lst + [arr[i]])
                i += 1
        nums.sort()
        r = []
        makeGroup(nums,[])
        return r

在这里插入图片描述
这个排重,前边各类双指针都用的很多了,就没什么可说得了

48. 旋转图像

给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。

示例 1:
在这里插入图片描述
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[[7,4,1],[8,5,2],[9,6,3]]
示例 2:
在这里插入图片描述
输入:matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
输出:[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]

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

额。。。。矩阵旋转。。。。说实话,别考虑坐标对应问题。。。那会死人的,直接按列读,然后把列变成行就差不多了

class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        n = len(matrix)
        r = [[x[c] for x in matrix] for c in range(n)]
        for i in range(n):
            matrix[i][:] = r[i][::-1]

在这里插入图片描述
python 也就是这个reverse方便,其他语言自己实现一下也一样

49. 字母异位词分组

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。
字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。

示例 1:
输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
示例 2:
输入: strs = [“”]
输出: [[“”]]
示例 3:
输入: strs = [“a”]
输出: [[“a”]]

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

脑筋急转弯,把单词字母排序,作为字典键,然后再往字典里存数组就好

class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        s = {}
        for i in strs:
            a = ''.join(sorted(list(i)))
            if a in s:
                s[a].append(i)
            else:
                s[a] = [i]
        return [s[n] for n in s]

在这里插入图片描述

/**
 * @param {string[]} strs
 * @return {string[][]}
 */
var groupAnagrams = function(strs) {
    o = {}
    for(var i = 0;i < strs.length;i++){
        s = strs[i]
        sr = []
        for (var j = 0;j < s.length;j++){
            sr.push(s[j])
        }
        sr.sort()
        k = sr.join('')
        if (o[k]){
            o[k].push(s)
        }else{
            o[k] = [s]
        }
    }
    r = []
    for (var k in o){
        r.push(o[k])
    }
    return r
};

在这里插入图片描述
。。。。成绩有点差啊,估计是箭头函数不熟的问题,抄大佬答案去

// 一下内容抄自leetcode第49题JavaScript 80ms答案
var groupAnagrams = function(strs) {
    let map = new Map()
    for(let str of strs){
        let key = [...str].sort().join('')
        let list = map.get(key) ? map.get(key) : new Array()
        list.push(str)
        map.set(key, list)
    }
    return Array.from(map.values())
};

好吧。。。。没得说,落伍就是落伍了,吃灰都吃不上了

50. Pow(x, n)

实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。

示例 1:
输入:x = 2.00000, n = 10
输出:1024.00000
示例 2:
输入:x = 2.10000, n = 3
输出:9.26100
示例 3:
输入:x = 2.00000, n = -2
输出:0.25000
解释:2-2 = 1/22 = 1/4 = 0.25

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

黑人问号?这个,是个啥章程?不用 ** 运算?不用 math库?老顾从95年接触计算机就没想过这东西怎么实现,最多就是自己乘个n次。。。。优化?不存在的!

嗯,各个版本都提交了一个最简单的版本,让语言环境自己计算的,我只是好奇,大佬们都怎么做的

# python
class Solution:
    def myPow(self, x: float, n: int) -> float:
        return x ** n
// javascript
var myPow = function(x, n) {
    return x ** n
};
// c#
public class Solution {
    public double MyPow(double x, int n) {
        return Math.Pow(x,n);
    }
}

leetcode 有一点不好,你没有提交记录,就不能抄答案,而且,你提交哪个语言环境的,就只能看哪个语言环境的答案,为了抄作业,也得多提交几个语言版本的啊

然后发现,原来是自己写递归算幂运算,比这个环境自带的块一点点?额。。。有必要么。。。既然都是自己乘n次,那就没必要继续研究了

小结

这次10道题有三个评价苦难。
第一个是41,缺失的正数,这个是没思路,纯粹用语言特性进行的作弊,还好后边找到资料能学习。
42接雨水,自己脑袋有坑,做了这么多双指针题,楞是想不起来用一下,第一版已经从前向后,从后向前推数据了,结果还是没用双指针。。。
最后就是44题,通配符题,本来以为会很快做出来,结果自己写了一地 bug,脑袋就浆糊了。等我缓两天再回来灭了他。
然后中等难度的 43 题,字符串相乘,这。。。。才是一步一步做下来的,结果还是错付了

在这里插入图片描述

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

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

相关文章

C语言数据结构(二)—— 受限线性表 【栈(Stack)、队列(Queue)】

在数据结构逻辑层次上细分&#xff0c;线性表可分为一般线性表和受限线性表。一般线性表也就是我们通常所说的“线性表”&#xff0c;可以自由的删除或添加结点。受限线性表主要包括栈和队列&#xff0c;受限表示对结点的操作受限制。一般线性表详解&#xff0c;请参考文章&…

数据结构基础之栈和队列

目录​​​​​​​ 前言 1、栈 2、队列 2.1、实现队列 2.2、循环队列 前言 上一篇中我们介绍了数据结构基础中的《动态数组》&#xff0c;本篇我们继续来学习两种基本的数据结构——栈和队列。 1、栈 特点&#xff1a;栈也是一种线性结构&#xff0c;相比数组&#xff…

(汇总记录)电机控制算法

1.S曲线应用电机加减速 电机控制 | S曲线加减速 - Tuple - 博客园 (cnblogs.com) 如要将S型曲线应用到电机的加减速控制上&#xff0c;需要将方程在X、Y坐标系进行平移&#xff0c;同时对曲线进行拉升变化&#xff1a;即 Y A B / ( 1 exp( -ax b ) ) &#xff0c;则根据该…

Pandas怎么添加数据列删除列

Pandas怎么添加数据列 1、直接赋值 # 1、直接赋值df.loc[:, "最高气温"] df["最高气温"].str.replace("℃", "").astype("int32")df.loc[:, "最低气温"] df["最低气温"].str.replace("℃"…

Java异常架构与异常关键字

Java异常简介 Java异常是Java提供的一种识别及响应错误的一致性机制。 Java异常机制可以使程序中异常处理代码和正常业务代码分离&#xff0c;保证程序代码更加优雅&#xff0c;并提高程序健壮性。在有效使用异常的情况下&#xff0c;异常能清晰的回答what, where, why这3个问…

【编程入门】N种编程语言做个应用市场(appstore)

背景 前面已输出多个系列&#xff1a; 《十余种编程语言做个计算器》 《十余种编程语言写2048小游戏》 《17种编程语言10种排序算法》 《十余种编程语言写博客系统》 《十余种编程语言写云笔记》 《N种编程语言做个记事本》 本系列做了个应用市场&#xff0c;支持下载安装安卓…

Bootstrap系列之导航

Bootstrap导航 可以在 ul 元素上添加 .nav类&#xff0c;在每个 li 选项上添加 .nav-item 类&#xff0c;在每个链接上添加 .nav-link 类: 基本的导航 <div class"container mt-3"><h2>导航</h2><p>简单的水平导航:</p><ul class&…

基于yolov5与改进VGGNet的车辆多标签实时识别算法

摘 要 为了能快速、有效地识别视频中的车辆信息&#xff0c;文中结合YOLOv3算法和CNN算法的优点&#xff0c;设计了一种能实时识别车辆多标签信息的算法。首先&#xff0c;利用具有较高识别速度和准确率的YOLOv3实现对视频流中车辆的实时监测和定位。在获得车辆的位置信息后…

《亚马逊逆向工作法》读书笔记

文章目录书籍信息构件&#xff1a;领导力准则与机制亚马逊领导力准则机制&#xff1a;强化领导力准则年度计划&#xff1a;OP1与OP2S-Team目标亚马逊的薪酬制度&#xff1a;强化长期思维招聘&#xff1a;亚马逊独特的抬杆者流程抬杆者招聘流程组织&#xff1a;独立单线程领导模…

Redis-Java代码使用示例

在我之前的项目中&#xff0c;使用Redis是我们团队自己封装了一个Redis操作类&#xff0c;但是这只是在Spring提供的RedisTemplate上做了一层封装而已&#xff0c;当时使用不是很熟练&#xff0c;都是一边在网上查资料&#xff0c;一边使用&#xff1b;这篇文章会介绍两种使用方…

分布式一致性算法——Paxos 和 Raft 算法

写在前面 本文隶属于专栏《100个问题搞定大数据理论体系》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见100个问题搞定大数据理论体系 I. 简介 介绍Paxos…

局域网实现PC、Pad、Android互联

文章目录局域网实现PC、Pad、Android互联一、网络邻居1、 Windows 配置1.1 开启共享功能1.2 设置用户1.3 共享文件夹2、 Pad 连接二、 FTP & HTTP1、 电脑配置1.1 HTTP 服务1.2 FTP 服务2、 连接3、 电脑连接 FTP三、 其他方式局域网实现PC、Pad、Android互联 在我们使用多…

【micropython】SPI触摸屏开发

背景&#xff1a;最近买了几块ESP32模块&#xff0c;看了下mircopython支持还不错&#xff0c;所以买了个SPI触摸屏试试水&#xff0c;记录一下使用过程。硬件相关&#xff1a;SPI触摸屏使用2.4寸屏幕&#xff0c;常见淘宝均可买到&#xff0c;驱动为ILI9341&#xff0c;具体参…

windows服务器实用(2)——搭建本地文档管理(gitbit的部署)

windows服务器实用——部署gitbit 在日常的项目管理中&#xff0c;无论是文档还是代码&#xff0c;一般都是存在本地。但是本地的文件存在一定的不确定性&#xff0c;尤其是当文档经常改动的时候&#xff0c;如果要找回之前改动的文件是很困难的。如果每次的改动都存在本地&am…

数据结构与算法之链表

目录单链表概念单链表操作循环链表概念循环链表操作双向循环链表概念双向循环链表操作单链表 概念 单链表也叫单向链表&#xff0c;是链表中最简单的一种形式&#xff0c;它的每个节点包含两个域&#xff0c;一个信息域&#xff08;元素域&#xff09;和一个链接域。这个链接…

微信投票-课后程序(JAVA基础案例教程-黑马程序员编著-第七章-课后作业)

【实验7-5】 微信投票 【任务介绍】 1.任务描述 如今微信聊天已经普及到几乎每一个人&#xff0c;在聊天中&#xff0c;经常会有人需要帮忙在某个APP中投票。本案例要求编写一个模拟微信投票的程序&#xff0c;通过在控制台输入指令&#xff0c;实现添加候选人、查看当前投票…

【C语言刷题】找单身狗、模拟实现atoi

目录 一、找单身狗 1.暴力循环法 2.分组异或法 二、模拟实现atoi 1.atoi函数的功能 2.模拟实现atoi 一、找单身狗 题目描述&#xff1a;给定一个数组中只有两个数字是出现一次&#xff0c;其他所有数字都出现了两次。 编写一个函数找出这两个只出现一次的数字。 比如&…

【Maven】(三)Maven仓库概念及私服安装与使用 附:Nexus安装包下载地址

文章目录1.前言2.Maven的仓库2.1.仓库类型3.私服Nexus3.1.Nexus的安装与配置3.1.1.使用安装包安装3.1.2.使用Docker安装3.2.Nexus配置3.2.1.仓库配置在这里插入图片描述4.私服的使用4.1.修改Maven配置4.2.从私服中下载构件4.3.推送构件到私服5.小结1.前言 本系列文章记录了 Ma…

超级困惑:单品牌好还是多品牌好?

超级困惑&#xff1a;单品牌好还是多品牌好&#xff1f; 相当于&#xff1a;买一套房好还是多套房好&#xff1f; 品牌是增加被消费者选择的优势 同一公司多品牌名之间&#xff0c;要区分明显 趣讲大白话&#xff1a;品牌要花大笔银子滴 【安志强趣讲信息科技87期】 **********…

?? JavaScript 双问号(空值合并运算符)

?? JavaScript 双问号&#xff08;空值合并运算符) 一、简述 在网上浏览 JavaScript 代码时或者学习其他代码时&#xff0c;可能会发现有的表达式用了两个问号&#xff08;??&#xff09;如下所示&#xff1a; let username; console.log(username ?? "Guest"…