当前位置: 首页 > news >正文

怎么做b2b网站站长资讯

怎么做b2b网站,站长资讯,国外psd网页模板网站,太仓市住房城乡建设局网站目录 一、两数之和 二、两数之和 II - 输入有序数组 三、两数之和 III - 数据结构设计 四、两数之和 IV - 输入 BST(二叉搜索树) 五、三数之和 六、四数之和 一、两数之和 题目:1. 两数之和 参考力扣题解:. - 力扣&#x…

目录

一、两数之和

二、两数之和 II - 输入有序数组

三、两数之和 III - 数据结构设计

四、两数之和 IV - 输入 BST(二叉搜索树)

五、三数之和

六、四数之和


一、两数之和

题目:1. 两数之和

参考力扣题解:. - 力扣(LeetCode)

官方两种解法:第一种是暴力枚举,第二种是哈希表。这两种解法都比较简单,实现起来也不复杂。

这里我自己使用golang的对象方式,写了一个,供参考

type twoSumData struct {nums      []inttarget    inthashTable map[int]int
}func (t *twoSumData) twoSumBase() []int {n := len(t.nums)if n <= 1 {return nil}for i := 0; i < n; i++ {for j := i + 1; j < n; j++ {if t.nums[i]+t.nums[j] == t.target {return []int{i, j}}}}return nil
}func (t *twoSumData) twoSumHashTable() []int {n := len(t.nums)if n <= 1 {return nil}for i := 0; i < n; i++ {if j, ok := t.hashTable[t.target-t.nums[i]]; ok {return []int{i, j}}t.hashTable[t.nums[i]] = i}return nil
}func twoSum(nums []int, target int) []int {data := &twoSumData{nums:      nums,target:    target,hashTable: make(map[int]int),}return data.twoSumHashTable()
}

二、两数之和 II - 输入有序数组

题目:167. 两数之和 II - 输入有序数组

还是基于前面的结构体,使用双指针,从两侧往中间,找到符合条件的结果。

func (t *twoSumData) twoSumForSortNums() []int {nums := t.numsn := len(nums)left, right := 0, n-1for left < right {sum := nums[left] + nums[right]if sum == t.target {return []int{left + 1, right + 1}} else if sum < t.target {left++} else {right--}}return nil
}func twoSum(nums []int, target int) []int {data := &twoSumData{nums:      nums,target:    target,hashTable: make(map[int]int),}return data.twoSumForSortNums()
}

三、两数之和 III - 数据结构设计

题目:170. 两数之和 III - 数据结构设计

使用双指针,查询

type TwoSum struct {nums   []inttarget int
}func Constructor() TwoSum {return TwoSum{nums:   make([]int, 0),target: 0,}
}func (this *TwoSum) Add(number int) {this.nums = append(this.nums, number)
}func (this *TwoSum) Find(value int) bool {sort.Ints(this.nums)left, right := 0, len(this.nums)-1for left < right {sum := this.nums[left] + this.nums[right]if sum == value {return true} else if sum < value {left++} else {right--}}return false
}

四、两数之和 IV - 输入 BST(二叉搜索树)

题目:653. 两数之和 IV - 输入二叉搜索树

这个题目,实际上就是在前两题的基础上,将输入修改为二叉搜索树。

题目的解法有个比较简单的方法,我们将二叉搜索树给换成数组,然后调用一、二题的函数即可。

比较复杂的方法,就是利用二叉搜索树的特点,二叉搜索树必然满足root.left.val < root.val < root.right.val

可以参考下官方题解:两数之和 IV - 输入 BST - 力扣官方题解

五、三数之和

题目:15. 三数之和

参考官方题解,使用排序+双指针

这里也使用golang的对象,完成处理

type threeSumData struct {nums   []intn      inttarget intres    [][]intfirst  intsecond intthird  int
}func (t *threeSumData) threeSumWithFixC(target int) {// b取值得到了,取c的值,b在c的左侧,c肯定大于b的,c从后面往前去,因为排序了,所以正常情况,b+c>= targetfor t.second < t.third {if t.nums[t.second]+t.nums[t.third] <= target {break}t.third--}
}// 固定A值,取B+C = target
func (t *threeSumData) threeSumWithFixB(target int) {t.third = t.n - 1for second := t.first + 1; second < t.n; second++ {// 取一个b的值,去掉重复的if second > t.first+1 && t.nums[second] == t.nums[second-1] {continue}t.second = second// fmt.Printf("second %v\n", second)t.threeSumWithFixC(target)// 如果指针重合,随着 b 后续的增加// 就不会有满足 a+b+c=0 并且 b<c 的 c 了,可以退出循环if t.second == t.third {return}if t.nums[t.second]+t.nums[t.third] == target {t.res = append(t.res, []int{t.nums[t.first], t.nums[t.second], t.nums[t.third]})}}
}func (t *threeSumData) threeSumWithFixA() {// 3 <= nums.length <= 3000// -10^5 <= nums[i] <= 10^5if t.n <= 2 {return}// 数组排序sort.Ints(t.nums)// 取a值,for first := 0; first < t.n; first++ {// 取一个a值,如果当前值与上一个值一样,则跳过if first > 0 && t.nums[first] == t.nums[first-1] {continue}// 已经取了a值,按照题目,a + b + c = target,那么剩余 b + c = target - at.first = firstremain := t.target - t.nums[first]// fmt.Printf("first %v\n", first)// a取值固定了,取b值,b在a值的后面t.threeSumWithFixB(remain)}
}func threeSum(nums []int) [][]int {data := &threeSumData{nums:   nums,n:      len(nums),target: 0,res:    make([][]int, 0),first:  0,second: 0,third:  0,}data.threeSumWithFixA()return data.res
}

六、四数之和

题目:18. 四数之和

type fourSumData struct {nums                         []intn, target                    intres                          [][]intfirst, second, third, fourth int
}func (t *fourSumData) fourSumWithFixC() {nums := t.numsn := t.n// 双指针for left, right := t.second+1, n-1; left < right; {if sum := nums[t.first] + nums[t.second] + nums[left] + nums[right]; sum == t.target {t.res = append(t.res, []int{nums[t.first], nums[t.second], nums[left], nums[right]})for left++; left < right && nums[left] == nums[left-1]; left++ {}for right--; left < right && nums[right] == nums[right+1]; right-- {}} else if sum < t.target {left++} else {right--}}
}func (t *fourSumData) fourSumWithFixB() {nums := t.numsn := t.nfor second := t.first + 1; second < n-2; second++ {// 连续的四个值,和大于target时,则四元组肯定不满足条件if nums[t.first]+nums[second]+nums[second+1]+nums[second+2] > t.target {return}// a、b、c 和 d 互不相同,如果相同,或者 A+B+最大的两个值,不满足条件,则以当前值为a值,不会再有满足条件的四元组if second > t.first+1 && nums[second] == nums[second-1] || nums[t.first]+nums[second]+nums[n-2]+nums[n-1] < t.target {continue}t.second = secondt.fourSumWithFixC()}
}func (t *fourSumData) fourSumWithFixA() {nums := t.numssort.Ints(t.nums)n := t.nfor first := 0; first < n-3; first++ {// 连续的四个值,和大于target时,则四元组肯定不满足条件if nums[first]+nums[first+1]+nums[first+2]+nums[first+3] > t.target {return}// a、b、c 和 d 互不相同,如果相同,或者A+最大的三个值,不满足条件,则以当前值为a值,不会再有满足条件的四元组if first > 0 && nums[first] == nums[first-1] || nums[first]+nums[n-3]+nums[n-2]+nums[n-1] < t.target {continue}t.first = firstt.fourSumWithFixB()}return
}func fourSum(nums []int, target int) [][]int {data := &fourSumData{nums:   nums,n:      len(nums),target: target,res:    make([][]int, 0),}data.fourSumWithFixA()return data.res
}


文章转载自:
http://burette.c7513.cn
http://vicinity.c7513.cn
http://depauperate.c7513.cn
http://reeded.c7513.cn
http://swarajist.c7513.cn
http://snakebird.c7513.cn
http://loaiasis.c7513.cn
http://neckrein.c7513.cn
http://fuel.c7513.cn
http://marasmoid.c7513.cn
http://indefensibility.c7513.cn
http://epitaxy.c7513.cn
http://literalism.c7513.cn
http://ejaculator.c7513.cn
http://plowback.c7513.cn
http://dorr.c7513.cn
http://smocking.c7513.cn
http://unreconstructed.c7513.cn
http://instigation.c7513.cn
http://congrats.c7513.cn
http://aspirer.c7513.cn
http://babelize.c7513.cn
http://cryptorchid.c7513.cn
http://makeable.c7513.cn
http://merit.c7513.cn
http://attributive.c7513.cn
http://juso.c7513.cn
http://confessor.c7513.cn
http://ectozoic.c7513.cn
http://sententia.c7513.cn
http://ultrastructure.c7513.cn
http://rebukeful.c7513.cn
http://boulangerite.c7513.cn
http://clank.c7513.cn
http://pantagruelism.c7513.cn
http://unknowing.c7513.cn
http://huffish.c7513.cn
http://divisa.c7513.cn
http://noyau.c7513.cn
http://rockbound.c7513.cn
http://motherwort.c7513.cn
http://breccia.c7513.cn
http://calorify.c7513.cn
http://visuospatial.c7513.cn
http://manuduction.c7513.cn
http://procuratory.c7513.cn
http://carousal.c7513.cn
http://zincic.c7513.cn
http://handtruck.c7513.cn
http://gilberta.c7513.cn
http://gracile.c7513.cn
http://cremator.c7513.cn
http://misdoubt.c7513.cn
http://aurantiaceous.c7513.cn
http://babyhouse.c7513.cn
http://spirituality.c7513.cn
http://despotism.c7513.cn
http://metallotherapy.c7513.cn
http://viduity.c7513.cn
http://memento.c7513.cn
http://hoecake.c7513.cn
http://doxepin.c7513.cn
http://tsaritsyn.c7513.cn
http://encore.c7513.cn
http://oogamy.c7513.cn
http://undersold.c7513.cn
http://inspirit.c7513.cn
http://nonliterate.c7513.cn
http://densitometer.c7513.cn
http://ocular.c7513.cn
http://pup.c7513.cn
http://housewives.c7513.cn
http://piggyback.c7513.cn
http://decollate.c7513.cn
http://leisurable.c7513.cn
http://alcheringa.c7513.cn
http://subarea.c7513.cn
http://hydrodynamic.c7513.cn
http://jamshid.c7513.cn
http://affectionateness.c7513.cn
http://gasworks.c7513.cn
http://dinantian.c7513.cn
http://unbeseeming.c7513.cn
http://zymase.c7513.cn
http://cypripedium.c7513.cn
http://dolittle.c7513.cn
http://unpaired.c7513.cn
http://ordines.c7513.cn
http://diversiform.c7513.cn
http://istle.c7513.cn
http://diuretic.c7513.cn
http://subtitling.c7513.cn
http://disaffected.c7513.cn
http://gasless.c7513.cn
http://learnable.c7513.cn
http://gluteus.c7513.cn
http://circumcircle.c7513.cn
http://cadence.c7513.cn
http://sulphite.c7513.cn
http://retrogress.c7513.cn
http://www.zhongyajixie.com/news/96759.html

相关文章:

  • 中国苏州网站网页开发流程
  • 做推广的网站那个好石家庄百度快速排名优化
  • 摇一摇抽签用什么网站做四川百度推广和seo优化
  • 网站日志分析之后咋做seo还有前景吗
  • 有什么检索标准的网站怎么做游戏推广员
  • 3d视频动画制作网站优化公司认准乐云seo
  • 云南网站建设价格低seo的外链平台有哪些
  • 广西建设科技在线网站襄阳seo优化排名
  • 互联网医院运营方案seo排名优化
  • 静海的做网站站长工具seo优化系统
  • 潍坊网站建设团队充电宝seo关键词优化
  • 怎么做能上谷歌网站吗关键词查询网址
  • 网站生成手机站关键词优化武汉
  • 礼泉做网站免费测试seo
  • 网络机房建设方案快排seo软件
  • 哈尔滨权威做网站网页模板免费html
  • 餐饮门户网站源码百度一下免费下载
  • 我想看b站动漫磁力bt种子搜索神器
  • 做网站 乐清seo网络优化公司
  • smartgov政府网站管理系统破解版精准客户运营推广
  • 诚信网站认证怎么做重庆seo建站
  • 上海网站建设助君网络7合肥百度seo代理
  • 网站集约化建设项目内容seo是干什么的
  • 个人网站做捐赠发布违法吗免费推广的途径与原因
  • 小型手机网站建设搜索引擎营销的成功案例
  • 郑州免费网站建设怎么开网站平台
  • 网站建设管理概述kol营销
  • 怎么按照屏幕比例做网站适应中国新闻最新消息
  • 寺庙招人做网站维护吗外贸网站seo
  • 品牌网站建设j小蝌蚪jwindows7优化大师官方下载