博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SUM
阅读量:6702 次
发布时间:2019-06-25

本文共 1627 字,大约阅读时间需要 5 分钟。

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,

Because nums[0] + nums[1] = 2 + 7 = 9,

return [0, 1].

  • Learn how to use sort in golang

  • Solution1: search

In a sorted array, find a[i] + a[j] == target

when a[beg] + a[end] > target, we have two options:

  1. beg-- we have already tried a[beg-1] + a[end], which not equal to target, can ignore

  2. end-- go ahead

when a[beg] + a[end] < target

  1. beg++ go ahead

  2. end++ tried before

  • Solution2: Using Map

import "sort"type Node struct {    Value int    Index int}type ByVal []*Nodefunc (byVal ByVal) Len() int {return len(byVal)}func (byVal ByVal) Swap(i, j int)  { byVal[i], byVal[j] = byVal[j], byVal[i] }func (byVal ByVal) Less(i, j int) bool { return byVal[i].Value < byVal[j].Value }func twoSum(nums []int, target int) []int {        nodeList := make([]*Node, 0)    for index, num := range nums {        nodeList = append(nodeList, &Node{Value:num, Index:index})    }        sort.Sort(ByVal(nodeList))    //fmt.Printf("%v\n", nodeList)        res := make([]int, 0)    beg := 0;     end := len(nodeList) - 1;    for beg < end {        cur := nodeList[beg].Value + nodeList[end].Value        if cur == target {            res = append(res, nodeList[beg].Index)            res = append(res, nodeList[end].Index)            break        }        if cur > target {            end--        }         if cur < target {            beg++        }     }    sort.Ints(res)    return res}

转载地址:http://snblo.baihongyu.com/

你可能感兴趣的文章
Delphi多媒体设计之TMediaPlayer组件(七)
查看>>
生产者消费者问题理解与Java实现
查看>>
mysql中不同事务隔离级别下数据的显示效果--转载
查看>>
健康生活之咖啡---咖啡灌肠
查看>>
java中的字符串简介,字符串的优化以及如何高效率的使用字符串
查看>>
测序原理 - PacBio技术资料
查看>>
张辉:工作几年就应该给自己“清零”
查看>>
史上最全的iOS各种设备信息获取总结(iPhone X 详细信息已更新)
查看>>
13.Android之注解问题
查看>>
分布式 TensorFlow:Distribution Strategy API 丨Google 开发者大会 2018
查看>>
并发、并行傻傻分不清楚?线程的一生都经历些什么?
查看>>
node-"fs-extra"模块代替fs使用
查看>>
multidex解决65k方法数问题
查看>>
移动端适配的各种问题
查看>>
Vue项目pdf(base64)转图片
查看>>
移动端 => 动态改变头部透明度
查看>>
[译] AsyncDisplayKit/Texture 官方文档(1)
查看>>
Git常用命令
查看>>
IPCInvoker,Android跨进程调用如此简单
查看>>
Laravel框架中如何使用Service模式?
查看>>