做網(wǎng)站需要哪些知識論述搜索引擎優(yōu)化的具體措施
文章目錄
- 刷題前嘮嗑
- 題目:數(shù)位和相等數(shù)對的最大和
- 題目描述
- 代碼與解題思路
- 思考解法
- 偷看大佬題解
- 結(jié)語
刷題前嘮嗑
LeetCode? 啟動!!!
本月已經(jīng)過半了,每日一題的全勤近在咫尺~
題目:數(shù)位和相等數(shù)對的最大和
題目鏈接:2342. 數(shù)位和相等數(shù)對的最大和
題目描述
代碼與解題思路
看到這道題目,你難道能忍的住嗎?我已經(jīng)手癢難耐了,暴力?啟動!
func maximumSum(nums []int) int {if len(nums) < 2 {return -1}ans := -1for right := 1 ; right < len(nums); right++ {for left := 0 ;left < right; left++ {if isSame(nums, left, right) {ans = max(ans, nums[left]+nums[right])}}}return ans
}func isSame(nums []int, left, right int) bool {l, r := nums[left], nums[right]suml, sumr := 0, 0for l > 0 {suml += l%10l /= 10}for r > 0 {sumr += r%10r /= 10}if suml == sumr {return true}return false
}
。。。標(biāo)準(zhǔn)結(jié)局,熟悉的感覺
思考解法
可以用哈希的思想來做,這個月做了不少類似的題目,因為他的數(shù)大小范圍是10 的九次方,也就是最多只有 81 中數(shù)位,我們可以用哈希映射,遍歷一遍整個數(shù)組,將每對數(shù)位的最大值求出來
然后再求出他們之間的最大值即可,其實這算是暴力解法啦
偷看大佬題解
func maximumSum(nums []int) int {val, ans := make([]int, 100), -1for _, v := range nums {t, cur := v, 0for t > 0 {cur += t%10t /= 10}if val[cur] != 0 {ans = max(ans, val[cur]+v)}val[cur] = max(val[cur], v)}return ans
}
一次遍歷就搞定了,太妙了,代碼很好理解,我就不解釋了(才不是我不知道怎么解釋呢,哼)
結(jié)語
今天沒啥想說的