【力扣刷題筆記第三期】Python 數據結構與算法

先從簡單的題型開始刷起,一起加油啊!!

點個關注和收藏唄,一起刷題鴨!!

第一批題目

1.設備編號

給定一個設備編號區間[start, end],包含418的編號都不能使用,如:418、148、718不能使用,108可用。請問有多少可用設備編號。

class Solution:def get_normal_device_number(self, start, end):count = 0for i in range(start, end+1):if ('4' in str(i) or '18' in str(i)):continueelse:count += 1return countif __name__ == "__main__":start, end = tuple(map(int, input().strip().split()))function = Solution()result = function.get_normal_device_number(start, end)print(result)

2.服務器集群網絡延時

給定一個正整數數組表示某服務器集群內服務器的機位編號,請選擇一臺服務器作為主服務器,使得集群網絡延遲最小,并返回該最小值。

  • 每臺服務器有唯一的機位編號。
  • 兩服務器之間的網絡延遲,可以簡單用所在機位編號之差的絕對值表示;服務器到自身的延遲為0。
  • 集群網絡延遲是指主服務器與所有服務器的網絡延遲之和。
class Solution:def cluster_latency(self, arr):res = 0mid = len(arr) // 2arr.sort()for num in arr:res += abs(num - arr[mid])return resif __name__ == "__main__":num = input().strip()arr = list(map(int, input().strip().split()))function = Solution()results = function.cluster_latency(arr)print(results)

3.給定差值的組合

給定一個數組,每個元素的值是唯一的,找出其中兩個元素相減等于給定差值 diff 的所有不同組合的個數。

輸入三行:
第一行為一個整數,表示給定差值diff;范圍[-50000, 50000]
第二行也為一個數字,表示數組的長度;范圍[2, 102400]
第三行為該數組,由單個空格分割的一組數字組成;其中元素的值范圍[-20, 102400]

用例保證第三行數字和空格組成的字符串長度不超過 649999

輸出

1個整數,表示滿足要求的不同組合的個數

樣例

輸入樣例 1?

3
5
1 3 2 5 4

輸出樣例 1

2

提示樣例 1

數組為[1 3 2 5 4], 差值 diff 為 3,其中 4 - 1 = 3,5 - 2 = 3,共 2 個組合滿足條件,因此輸出 2

class Solution:def proc(self, arr, diff):# 在此添加你的代碼if diff == 0:return 0arr_set = set(arr)diff_set = set(ele + diff for ele in arr_set)cross_set = arr_set & diff_setreturn len(cross_set)
if __name__ == "__main__":diff = int(input().strip())count = int(input().strip())arr = list(map(int, input().strip().split(' ')))function = Solution()result = function.proc(arr, diff)print(result)

左右指針算法:

class Solution:def __init__(self):self.count, self.left, self.right = 0, 0, 0# 左右指針算法def proc(self, nums, d):# 差值為0,直接返回0if d == 0:return self.count# 升序排序nums.sort()while self.right < len(nums) and self.left < len(nums):# 當右值左值差大于diff時,左指針加一if nums[self.right] - nums[self.left] > d:self.left += 1continue# 當右值左值差等于diff時,左指針加一,右指針加一,結果加一elif nums[self.right] - nums[self.left] == d:self.left += 1self.right += 1self.count += 1# 當右值左值差小于diff時,右指針加一else:self.right += 1return self.count

集合交集算法:

class Solution:def __init__(self):self.count = 0def proc_set(self, nums, d):if d == 0:return self.countnums_set = set(nums)diff_set = set(i - d for i in nums_set)return len(nums_set & diff_set)

好厲害的算法啊!執行時間也很短

第七批題目

1.IP報文頭解析

一個IP報文頭及所包含的各信息的關系如圖所示:

  • 圖中從上到下、從左到右依次表示各信息在IP報文頭中的順序。
  • 各信息括號內的數字表示所占位數,如:標識(16),表示標識部分占16個bit位即2個字節長度。

現給定一個十六進制格式的IP報文頭數據,請解析輸出其中的總長度、標志、目的IP地址:

  • 總長度、標志為十進制整數
  • 目的IP地址為點分十進制格式,如:192.168.20.184

輸入樣例 1?

45 00 10 3c 7c 48 20 03 80 06 00 00 c0 a8 01 02 c0 a8 14 b8

輸出樣例 1

4156,1,192.168.20.184

對照圖示的各信息所在位置:
總長度 :0x103c,十進制值為 4156
標 志 :0x20的二進制為 00100000,其中的高 3 位為標志,二進制為 001,10進制值為 1
目的IP地址:0xc0a814b8,點分十進制為 192.168.20.184

(內心:簡單題的題目怎么這么復雜?????看都看不懂)

前置知識:每個十六進制(0x)數字對應4位二進制數。

from typing import List
class Solution:def get_ip_info(self, datas: str) -> str:# 1.先按空格切割data_lst = datas.split()# 2.提取長度字段,16進制轉為10進制,最終轉為字符串length_str = str(int("0x" + "".join(data_lst[2:4]), 16))# 3.提取標志字段,16進制轉10進制,再轉2進制(注意zfill補齊前置0),再轉10進制,最終轉為字符串flag_str = str(int(bin(int("0x" + "".join(data_lst[6]), 16))[2:].zfill(8)[:3], 2))# 4.最后四位轉為點分10進制,最終轉為字符串ip_str = ".".join([str(int("0x" + x, 16)) for x in data_lst[-4:]])return length_str + "," + flag_str + "," + ip_str
if __name__ == "__main__":data = input().strip()function = Solution()results = function.get_ip_info(data)print(results)

length_str = str(int("0x" + "".join(data_lst[2:4]), 16)) ,將十六進制表示的一段數據轉換為十進制表示的字符串。我們可以一步步地解讀它:

1. `data_lst[2:4]`:這是一個列表切片操作,從列表 `data_lst` 中提取索引2和3的兩個元素。這些元素應該是以字符串形式表示的十六進制數。

2. `"".join(data_lst[2:4])`:這個操作將步驟1中提取的元素連接成一個字符串。例如,如果 `data_lst[2]` 是 `'10'`,`data_lst[3]` 是 `'3c'`,那么結果將是 `'103c'`。

3. `"0x" + "".join(data_lst[2:4])`:在連接好的字符串前面加上 `'0x'`,使其成為一個合法的十六進制字符串表示。例如,如果結果是 `'103c'`,那么現在它變成 `'0x103c'`。

4. `int("0x" + "".join(data_lst[2:4]), 16)`:將這個十六進制字符串轉換為一個十進制的整數。`int` 函數的第一個參數是要轉換的字符串,第二個參數 `16` 表示輸入是一個十六進制數。例如,`'0x103c'` 會被轉換成十進制的 `4156`。

5. `str(int("0x" + "".join(data_lst[2:4]), 16))`:將上述得到的十進制整數轉換為字符串。例如,`4156` 會被轉換成 `'4156'`。

舉例說明:

假設 `data_lst = ["45", "00", "10", "3c", "7c", "48", "20", "03", "80", "06", "00", "00", "c0", "a8", "01", "02", "c0", "a8", "14", "b8"]`,那么:

- `data_lst[2:4]` 提取的子列表是 `["10", "3c"]`。
- `"".join(data_lst[2:4])` 結果是 `'103c'`。
- `"0x" + "".join(data_lst[2:4])` 結果是 `'0x103c'`。
- `int("0x103c", 16)` 結果是 `4156`。
- `str(4156)` 結果是 `'4156'`。

flag_str = str(int(bin(int("0x" + "".join(data_lst[6]), 16))[2:].zfill(8)[:3], 2))? 代碼詳細解讀

進制轉化:16→10→2→10

1.int("0x" + "".join(data_lst[6]), 16),16進制轉化成十進制,int("0x20", 16) 結果是 32?

2.使用 bin 函數將十進制整數轉換為二進制字符串,結果是"0b100000"

3.[2:]?去掉前綴 "0b"

4.zfill(8) 方法將二進制字符串填充到 8 位長度

5.[:3]? 使用切片操作提取二進制字符串的高 3 位?對于 "00100000",結果是 "001"

6.使用 int 函數將二進制字符串 "001" 轉換為十進制整數

ip_str = ".".join([str(int("0x" + x, 16)) for x in data_lst[-4:]]) 解讀

  • 對于每個元素 x,首先使用 "0x" + x 將其轉換為十六進制字符串,例如 "c0" 變為 "0xC0"
  • 使用 int("0x" + x, 16) 將十六進制字符串轉換為十進制整數,例如 int("0xC0", 16) 結果是 192

注意A.join(B)? ?A 和 B 都是字符串類型

int(A,B)? ?A是字符串類型,返回的是整數類型

2.可漫游服務區

漫游(roaming)是一種移動電話業務,指移動終端離開自己注冊登記的服務區,移動到另一服務區(地區或國家)后,移動通信系統仍可向其提供服務的功能。

用戶可簽約漫游限制服務,設定一些限制區域,在限制區域內將關閉漫游服務。

現給出漫游限制區域的前綴范圍,以及一批服務區(每個服務區由一個數字字符串標識),請判斷用戶可以漫游的服務區,并以字典序降序輸出;如果沒有可以漫游的服務區,則輸出字符串empty

輸入

首行輸入兩個整數m n,取值范圍均為 [1, 1000]。
隨后 m 行是用戶簽約的漫游限制區域的前綴范圍,每行格式為start end(含start和end),start和end是長度相同的數字字符串,長度范圍為[1, 6],且 start <= end。
接下來 n 行是服務區列表,每行一個數字字符串表示一個服務區,長度范圍為[6,15]。

輸出

字典序降序排列的可漫游服務區列表,或字符串empty

輸入樣例 1?

2 4
755 769
398 399
3970001
756000000000002
600032
755100

輸出樣例 1

600032
3970001

提示樣例 1

服務區 755100 和 756000000000002 的前綴在漫游限制 [755,769] 范圍內,不能漫游。 3970001 和 600032,不在任何漫游限制范圍內,因此可以漫游,按字典序降序先輸出 600032。

方法一:

    prex_len = len(restricts[0][0])ranges = []for i in restricts:start = int(i[0])end = int(i[-1])for j in range(start, end+1):ranges.append(j)res = []for j in areas:if int(j[:prex_len]) not in ranges:res.append(j)res.sort(reverse=True)if not res:print("empty") return res

方法二:

def get_roaming_area(self, restricts: List[List[str]], areas: List[str]) -> List[str]:un_limit = []# 備份for j in areas:un_limit.append(j)# 在范圍內就刪除for k in areas:for i, j in restricts:if int(i) <= int(k[0:len(i)]) <= int(j):un_limit.remove(k)# 輸出結果if not un_limit:un_limit = ['empty']else:un_limit = sorted(un_limit, reverse=True)return un_limit

# 定義測試樣例

restricts_num, areas_num = 2, 4

restricts = [["755", "769"], ["398", "399"]]

areas = ["3970001", "756000000000002", "600032", "755100"]

  1. for k in areas:

    • 這個循環遍歷areas列表中的每一個元素,k代表areas中的一個區域。
  2. for i, j in restricts:

    • 這個內層循環遍歷restricts列表中的每一個限制條件,ij分別代表每個限制條件中的兩個值。
    • restricts是一個包含成對限制條件的列表,每對由兩個字符串(ij)組成,表示一個范圍。
  3. if int(i) <= int(k[0:len(i)]) <= int(j):

    • 這一行檢查當前區域k是否在當前限制條件ij之間。
    • int(i)int(j)將限制條件ij轉換為整數。
    • k[0:len(i)]提取區域k的前len(i)個字符并轉換為整數。這是因為ij的長度可能不同,代碼需要根據i的長度來提取并比較k的相應部分。
    • 如果提取的部分在ij之間(包括邊界),條件為真。
  4. un_limit.remove(k)

    如果條件為真,從un_limit列表中移除區域k,表示該區域k符合當前的限制條件,不再屬于不受限制的區域。

3.信號解碼

無線基站接收到手機上報的某種信息(例如11@2$3@14)后,需要先進行解碼操作,再計算結果。假定每條信息中都至少包含特殊運算符?@?和?$?的一種,解碼規則如下:

  1. x@y = 2*x+y+3
  2. x$y = 3*x+2*y+1
  • x、y 都是非負整數 ;
  • @ 的優先級高于 $ ;
  • 相同的特殊運算符,按從左到右的順序計算。

11@2$3@14

= (2*11+2+3)$3@14

= 27$3@14

= 27$(2*3+14+3)

= 27$23

= 3*27+2*23+1

= 128

現給定一個字符串,代表一個手機上報的待解碼信息,請按照解碼規則進行解碼和計算,并返回計算結果。

import re
class Solution:def get_calc_result(self, information: str) -> int:# 這一步把輸入拆成數字和符號存入字符串,如11@2$3@14 -> ['11', '@', '2', '$', '3', '@', '14']ex = re.split(r"(\D)", information)  pos = 0 #用于保存符號的位置sign = '' #用于記錄符號#核心邏輯:邊計算,便刪除ex表達式中元素,直到只剩一個值即為結果while len(ex)!=1:#如果還存在@則sign記錄為@,pos記錄為@在ex中的位置;否則記錄$信息(實現@優先于$)(sign, pos) = ('@', ex.index('@')) if '@' in ex else ('$', ex.index('$'))ex[pos-1] = self.cal(sign, int(ex[pos-1]), int(ex[pos+1]))del ex[pos:pos+2]return ex[0]def cal(self, sign, x, y):if sign == '@': return 2*x+y+3else: return 3*x+2*y+1
if __name__ == "__main__":information = str(input().strip())function = Solution()results = function.get_calc_result(information)print(results)


1. `re.split(r"(\D)", information)`
- 使用正則表達式 `(\D)` 將 `information` 按非數字字符拆分成一個列表。括號 `()` 表示捕獲分組,因而分隔符本身也會包含在結果列表中。例如,字符串 `11@2$3@14` 將被拆分成 `['11', '@', '2', '$', '3', '@', '14']`。

import restring = "a1b2c3d4"
# 使用捕獲組 (\D) 來分割字符串
result = re.split(r"(\D)", string)
print(result)#輸出
['', 'a', '1', 'b', '2', 'c', '3', 'd', '4', '']
import restring = "a1b2c3d4"
# 使用正則表達式 \D 來分割字符串,\D 表示非數字字符
result = re.split(r"\D", string)
print(result)#輸出
['', '1', '2', '3', '4']


2. `pos = 0` 和 `sign = ''`
- 初始化變量 `pos` 和 `sign`,分別用于保存符號的位置和記錄當前符號。

3. **`while len(ex) != 1:`**
- 這個循環會持續運行,直到 `ex` 列表中只剩下一個元素,即最終計算結果。

4. `(sign, pos) = ('@', ex.index('@')) if '@' in ex else ('$', ex.index('$'))`
- 這行代碼檢查 `ex` 列表中是否包含 `@` 符號。如果包含,則 `sign` 設為 `@`,`pos` 設為 `@` 在 `ex` 中的位置。如果不包含 `@`,則檢查并設置 `$` 符號的信息。這樣確保 `@` 的優先級高于 `$`。

A if condition else B
condition 是條件,如果條件為真,表達式返回 A;否則返回 B

如果條件為真,返回一個元組 ('@', ex.index('@'))

  • sign 被賦值為 '@'
  • pos 被賦值為 ex.index('@'),即 '@'ex 列表中的索引位置。

如果條件為假(即 ex 列表中不包含字符 '@'),返回一個元組 ('$', ex.index('$'))。這里:

  • sign 被賦值為 '$'
  • pos 被賦值為 ex.index('$'),即 '$'ex 列表中的索引位置。


5.ex[pos-1] = self.cal(sign, int(ex[pos-1]), int(ex[pos+1]))
- 調用 `cal` 方法,傳入符號 `sign` 以及符號前后的數字,進行計算,并將計算結果賦值給符號前面的數字位置。

6. **`del ex[pos:pos+2]`**
- 刪除符號和符號后面的數字,使得 `ex` 列表長度減少。舉例來說,`['11', '@', '2', '$', '3', '@', '14']` 將變為 `['結果', '$', '3', '@', '14']`。

7. **`return ex[0]`**
- 當 `while` 循環結束時,`ex` 列表中只剩下一個元素,即最終計算結果,將其返回。


假設輸入 `information = "11@2$3@14"`:

1. 初始分割為 `['11', '@', '2', '$', '3', '@', '14']`。
2. 首先處理 `@` 操作符:
- `11@2` 計算結果為 `2*11 + 2 + 3 = 27`,列表變為 `['27', '$', '3', '@', '14']`。
3. 繼續處理 `@` 操作符:
- `3@14` 計算結果為 `2*3 + 14 + 3 = 23`,列表變為 `['27', '$', '23']`。
4. 最后處理 `$` 操作符:
- `27$23` 計算結果為 `3*27 + 2*23 + 1 = 154`,列表變為 `['154']`。
5. 返回 `154` 作為最終結果。
?

方法二:

 #$的優先級低,直接分割,先把@計算完后,再單獨計算$lst_info = information.split("$")#判斷list中每個元素,沒有@則跳過,有@計算for i in range(len(lst_info)):#每個再按@拆if '@' in lst_info[i]:lst1 = lst_info[i].split("@")lst2 = [int(j) for j in lst1]#按棧的方式計算lst2.append(lst2[0])for j in range(1,len(lst2)-1):lst2.append(lst2.pop(-1)*2 +lst2[j]+3)#最后只保留算出來的結果lst_info[i] =lst2[-1]lst_fianl = [int(i) for i in lst_info]#計算$,原理和上面相同lst_fianl.append(lst_fianl[0])for j in range(1, len(lst_fianl) - 1):lst_fianl.append(lst_fianl.pop(-1) * 3 + lst_fianl[j]*2 + 1)return lst_fianl[-1]

4.比特翻轉

工程師小A在對二進制碼流 bits 進行驗證,驗證方法為:給定目標值 target(0 或 1),最多可以反轉二進制碼流 bits 中的一位,來獲取最大連續 target的個數,請返回該個數。

解答要求時間限制:1000ms, 內存限制:256MB

輸入

第一行為 target,取值僅為 0 或 1;
第二行為 bits 的長度 length,取值范圍 [1, 10000];
第三行為 bits 數組的元素,只包含 0 或 1 。

輸出

一個整數,表示最大連續 target 的個數

樣例

輸入樣例 1?

1
9
0 1 1 0 1 0 1 0 0

輸出樣例 1

4

提示樣例 1

0 1 1?0?1 0 1 0 0
目標值為1,表示需要獲取最大連續1的個數。
第二個出現的0反轉為1,得到0 1 1 1 1 0 1 0 0 ,獲得 4 個連續的1;
其它反轉獲得連續1的個數最大為3,如 1 1 1 0 1 0 1 0 0 或 0 1 1 0 1 1 1 0 0 。

輸入樣例 2?

0
8
0 0 0 0 0 0 0 0

輸出樣例 2

8

提示樣例 2

不需要反轉即可獲得最大連續0,個數為8

滑動窗口的解法:

def find_max_consecutive_bits(self, target: int, bits: List[int]) -> int:left, right = 0, 1res = 0while right <= len(bits):if bits[left:right].count(1 - target) <= 1:res = max(res, right - left)right += 1else:left += 1return res

if bits[left:right].count(1 - target) <= 1:

計算當前子數組 bits[left:right] 中不同于 target 的位數(即 1 - target 的位數)。如果不同于 target 的位數不超過 1,則當前子數組符合條件。

更新 res 為當前子數組的長度與之前最大長度中的較大者。

right 指針右移一位,擴展子數組范圍。

def main():target, length, bits = int(input().strip()), int(input().strip()), [*map(int, input().strip().split())]count1 = count2 = max_length = 0  # count2計算前一段連續target的個數 + 1, count1計算當前連續target的個數for i in range(length):if bits[i] == target:count1 += 1continuemax_length = max(max_length, count2 + count1)count2 = count1 + 1count1 = 0max_length = max(max_length, count2 + count1)print(max_length)
if __name__ == "__main__":main()


啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊,第一批和第七批的題目比起來還真的不是同一個難度啊

加油啊!!祝我好運

引用的代碼就不一一注釋原處了,作者介意的請聯系我加上

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14857.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14857.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14857.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

對于map的新應用

題源codeforces1974 problemC 題目大意 定義當兩個三元組A和B中&#xff0c;滿足三元組中有且僅有兩個元素相等&#xff0c;比如 a 1 b 1 , a 2 b 2 , a 3 ! b 3 a_1b_1,a_2b_2,a_3!b_3 a1?b1?,a2?b2?,a3?!b3? 這只是一種情況&#xff0c;三種情況之一 解題思路 …

java抽象類和接口知識總結

一.抽象類 1.啥是抽象類 用專業語言描述就是&#xff1a;如果一個類中沒有包含足夠的信息來描繪一個具體的對象&#xff0c;這樣的類就是抽象類 當然這話說的也很抽象&#xff0c;所以我們來用人話來解釋一下抽象類 拋開編程語言這些&#xff0c;就以現實舉例&#xff0c;我…

每日練習之排序——鏈表的合并;完全背包—— 兌換零錢

鏈表的合并 題目描述 運行代碼 #include<iostream> #include<algorithm> using namespace std; int main() { int a[31];for(int i 1;i < 30;i)cin>>a[i];sort(a 1,a 1 30);for(int i 1;i < 30;i)cout<<a[i]<<" ";cout&…

Mysql之Innodb存儲引擎

1.Innodb數據存儲 innodb如今能夠做到mysql的默認數據存儲引擎&#xff0c;肯定有著其好處的&#xff0c;那么innodb有什么好處呢? 1. 當意外斷電或者重啟&#xff0c; InnoDB 能夠做到奔潰恢復&#xff0c;撤銷沒有提交的數據 2.InnoDB 存儲引擎維護自己的緩沖池&#xff0c…

UDS(ISO 14229)學習筆記

文章目錄 名詞縮寫Vector視頻筆記$10$27Fault Memory物理尋址和功能尋址UDS服務分類0x19服務0x14DTC汽車控制器(ECU)中DTC的狀態位物理尋址和功能尋址單幀 多幀 首幀 連續幀名詞縮寫 DTC Diagnostic Trouble Code FTB Fault Type Byte SID Service Identifier SF Subfunctio…

DML(Data Manipulation Language)數據操作語言

一、增加 insert into -- 寫全所有列名 insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);-- 不寫列名&#xff08;所有列全部添加&#xff09; insert into 表名 values(值1,值2,...值n);-- 插入部分數據 insert into 表名(列名1,列名2) values(值1,值2); 舉…

醫院掛號就診系統的設計與實現

前端使用Vue.js 后端使用SpiringBoot MyBatis 數據使用MySQL 需要項目和論文加企鵝&#xff1a;2583550535 醫院掛號就診系統的設計與實現_嗶哩嗶哩_bilibili 隨著社會的發展&#xff0c;醫療資源分布不均&#xff0c;患者就診難、排隊時間長等問題日益突出&#xff0c;傳統的…

軟考備考三

操作系統 操作系統概述 功能&#xff1a;組織和管理軟件&#xff0c;硬件資源以及計算機系統中的工作流程&#xff0c;控制程序的執行&#xff0c;向用戶提供接口。 分類&#xff1a; 1.批處理操作系統 單道批 多道批&#xff08;宏觀上并行&#xff0c;微觀上串行&#xff09…

Hadoop3:HDFS的Fsimage和Edits文件介紹

一、概念 Fsimage文件&#xff1a;HDFS文件系統元數據的一個永久性的檢查點&#xff0c;其中包含HDFS文件系統的所有目 錄和文件inode的序列化信息。 Edits文件&#xff1a;存放HDFS文件系統的所有更新操作的路徑&#xff0c;文件系統客戶端執行的所有寫操作首先 會被記錄到Ed…

K8s 身份認證和權限

文章目錄 K8s 身份認證和權限認證Service AccountsService Account Admission ControllerToken ControllerService Account Controller 授權(RBAC)RoleClusterRoleRoleBindingClusterRoleBinding K8s 身份認證和權限 Kubernetes 中提供了良好的多租戶認證管理機制&#xff0c;…

二叉樹的鏈式結構

1.二叉樹的遍歷 2.二叉樹鏈式結構的實現 3.解決單值二叉樹題 1.二叉樹的遍歷 1.1前序&#xff0c;中序以及后序遍歷 二叉樹的遍歷是按照某種特定的規則&#xff0c;依次對二叉樹的結點進行相應的操作&#xff0c;并且每個結點只操作一次。 二叉樹的遍歷有這些規則&#xff…

主流電商平臺商品實時數據采集API接口||抖音電商數據分析實例|可視化

— 1 — 抖音電商數據【抖音電商API數據采集】分析場景 1. 這里&#xff0c;我們選擇“伊利”這個品牌作為案例進行分析&#xff0c;在短短的4個月里&#xff0c;從最初每月營收17.07萬&#xff0c;到6月份達到了2485.54 萬&#xff0c;伊利的牛奶&#xff0c;有點牛&#xff…

Spring 對 Junit4,Junit5 的支持上的運用

1. Spring 對 Junit4,Junit5 的支持上的運用 文章目錄 1. Spring 對 Junit4,Junit5 的支持上的運用每博一文案2. Spring對Junit4 的支持3. Spring對Junit5的支持4. 總結&#xff1a;5. 最后&#xff1a; 每博一文案 關于理想主義&#xff0c;在知乎上看到一句話&#xff1a;“…

在Windows下訪問WSL(Windows Subsystem for Linux)文件夾

在Windows下訪問WSL&#xff08;Windows Subsystem for Linux&#xff09;文件夾&#xff0c;可以按照以下步驟操作&#xff1a; 通過Windows文件資源管理器訪問&#xff1a; 打開文件資源管理器。在地址欄中輸入\\wsl$&#xff0c;然后按回車鍵。這將打開一個顯示WSL可用發行版…

kafka配置消費者重要參數

文章目錄 fetch.min.bytesfetch.max.wait.msfetch.max.bytesmax.poll.recordsmax.partition.fetch.bytessession.timeout.ms和heartbeat.interval.msmax.poll.interval.msrequest.timeout.msauto.offset.resetenable.auto.commitpartition.assignment.strategy區間(range)輪詢(…

Xline社區會議Call Up|在 CURP 算法中實現聯合共識的安全性

為了更全面地向大家介紹Xline的進展&#xff0c;同時促進Xline社區的發展&#xff0c;我們將于2024年5月31日北京時間11:00 p.m.召開Xline社區會議。 歡迎您屆時登陸zoom觀看直播&#xff0c;或點擊“閱讀原文”鏈接加入會議&#xff1a; 會議號: 832 1086 6737 密碼: 41125…

通過cmd命令行使用用3dmax自帶的vray渲染

有時調試需要使用vray渲染vrscene文件看效果&#xff0c;只裝有3dmax下可以使用自帶vray渲染&#xff0c;在3dmax的渲染日志里面看自帶引擎路徑 使用命令行進入到此目錄 執行命令指定vr文件即可看到效果&#xff0c;如&#xff1a;vray.exe -sceneFile“C:\test15\202405241…

pip安裝報錯解決之后,手動安裝太麻煩,怎么辦

在使用pip install package_name安裝公共庫的時候,經常會報錯: Microsoft Windows [版本 6.1.7601] 版權所有 (c) 2009 Microsoft Corporation。保留所有權利。C:\Users\Administrator>pip install hatch WARNING: Ignoring invalid distribution -ip (d:\soft\python\py…

記一次成功的性能調優

環境&#xff1a;mysql8&#xff0c;表A大小10G&#xff0c;dbeaver24.0.5 現象&#xff1a;查詢頁面加載數據慢 操作&#xff1a; 第一步&#xff1a;新建sql編輯器&#xff0c;把sql貼到編輯器&#xff0c;帶參數&#xff1b; 第二步&#xff1a;在sql前加explain空一個并…

Cesium與Three相機同步(2)

之前實現了將Three相機同步到Cesium相機Cesium與Three相機同步(1)-CSDN博客 現在是將Cesium相機同步到Three相機,從而實現了相機雙向同步。 <!DOCTYPE html> <html lang="en"><head><title>three.js webgl - orbit controls</title&g…