2460. 對(duì)數(shù)組執(zhí)行操作-簡(jiǎn)單
給你一個(gè)下標(biāo)從 0 開(kāi)始的數(shù)組 nums ,數(shù)組大小為 n ,且由 非負(fù) 整數(shù)組成。
你需要對(duì)數(shù)組執(zhí)行 n - 1 步操作,其中第 i 步操作(從 0 開(kāi)始計(jì)數(shù))要求對(duì) nums 中第 i 個(gè)元素執(zhí)行下述指令:
如果 nums[i] == nums[i + 1] ,則 nums[i] 的值變成原來(lái)的 2 倍,nums[i + 1] 的值變成 0 。否則,跳過(guò)這步操作。
在執(zhí)行完 全部 操作后,將所有 0 移動(dòng) 到數(shù)組的 末尾 。
例如,數(shù)組 [1,0,2,0,0,1] 將所有 0 移動(dòng)到末尾后變?yōu)?[1,2,1,0,0,0] 。
返回結(jié)果數(shù)組。
注意 操作應(yīng)當(dāng) 依次有序 執(zhí)行,而不是一次性全部執(zhí)行。
題解:
跟著題目描述一步一步做就可以了,沒(méi)難度
代碼(Go):文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-487472.html
func applyOperations(nums []int) []int {
for i := 0;i < len(nums) - 1;i++{
if nums[i] == nums[i + 1]{
nums[i] = nums[i] * 2
nums[i + 1] = 0
}
}
p := 0
for i := 0;i < len(nums);i++{
if nums[i] != 0{
temp := nums[p]
nums[p] = nums[i]
nums[i] = temp
p++
}
}
return nums
}
2363. 合并相似的物品-簡(jiǎn)單
題目描述:
給你兩個(gè)二維整數(shù)數(shù)組 items1 和 items2 ,表示兩個(gè)物品集合。每個(gè)數(shù)組 items 有以下特質(zhì):
items[i] = [valuei, weighti] 其中 valuei 表示第 i 件物品的 價(jià)值 ,weighti 表示第 i 件物品的 重量 。
items 中每件物品的價(jià)值都是 唯一的 。
請(qǐng)你返回一個(gè)二維數(shù)組 ret,其中 ret[i] = [valuei, weighti], weighti 是所有價(jià)值為 valuei 物品的 重量之和 。
注意:ret 應(yīng)該按價(jià)值 升序 排序后返回。
題解:
思想就是哈希表,但是因?yàn)楣1頍o(wú)序且價(jià)值上限是1000,所以采用了計(jì)數(shù)排序的思想用一個(gè)長(zhǎng)度是1000的數(shù)組保存重量,然后遍歷此數(shù)組取出重量相加后的結(jié)果
代碼(Go):
func mergeSimilarItems(items1 [][]int, items2 [][]int) [][]int {
arr := [1001]int{}
for _,v := range items1{
arr[v[0]] += v[1]
}
for _,v := range items2{
arr[v[0]] += v[1]
}
sce := [][]int{}
for i,v := range arr{
if v != 0{
scei := make([]int,2)
scei[0] = i
scei[1] = v
sce = append(sce,scei)
}
}
return sce
}
1408. 數(shù)組中的字符串匹配-簡(jiǎn)單
題目描述:
給你一個(gè)字符串?dāng)?shù)組 words ,數(shù)組中的每個(gè)字符串都可以看作是一個(gè)單詞。請(qǐng)你按 任意 順序返回 words 中是其他單詞的子字符串的所有單詞。
如果你可以刪除 words[j] 最左側(cè)和/或最右側(cè)的若干字符得到 words[i] ,那么字符串 words[i] 就是 words[j] 的一個(gè)子字符串。
題解:
只會(huì)暴力,本來(lái)以為不行,沒(méi)想到官方題解也只有暴力,看評(píng)論有大佬用超級(jí)長(zhǎng)的代碼降低了時(shí)間復(fù)雜度,估計(jì)因?yàn)檫@題是簡(jiǎn)單題所以官方就沒(méi)給優(yōu)化的算法
代碼(Go):
func stringMatching(words []string) (ans []string) {
for i, x := range words {
for j, y := range words {
if j != i && strings.Contains(y, x) {
ans = append(ans, x)
break
}
}
}
return
}
92. 反轉(zhuǎn)鏈表 II-中等
題目描述:
給你單鏈表的頭指針 head 和兩個(gè)整數(shù) left 和 right ,其中 left <= right 。請(qǐng)你反轉(zhuǎn)從位置 left 到位置 right 的鏈表節(jié)點(diǎn),返回 反轉(zhuǎn)后的鏈表 。
題解:
反轉(zhuǎn)之后再將需要反轉(zhuǎn)的子鏈表和前后連接起來(lái),用一個(gè)變量記錄子鏈表的前連接點(diǎn),三個(gè)變量用于反轉(zhuǎn)鏈表。官方題解在一次遍歷中邊遍歷邊進(jìn)行頭插法插節(jié)點(diǎn),可以少遍歷一次鏈表,速度更快
代碼(Go):
func reverseBetween(head *ListNode, left int, right int) *ListNode {
if head.Next == nil || left == right{
return head
}
p,r,l := head,head,head
q := p.Next
for i := 0;i < left - 1;i++{
p = p.Next
q = q.Next
}
for i := 0;i < right - 1;i++{
r = r.Next
}
p.Next = r.Next
r.Next = nil
for q.Next != nil{
r = q.Next
q.Next = p
p = q
q = r
r = r.Next
}
q.Next = p
if left > 1{
for i := 0;i < left - 2;i++{
l = l.Next
}
l.Next = q
}else{
head = q
}
return head
}
總結(jié)
又是比較順利的一天,沒(méi)有什么難題文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-487472.html
到了這里,關(guān)于從零開(kāi)始的力扣刷題記錄-第四十八天的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!