leetcode:算法题golang

1、在一个字符串里面找出最长的不重复子串

2、数组中的重复数字

第一种解法:先排序再扫描。从排好序的数组进行遍历,记录当前位置与其之前位置的数进行比较,若相等则输出该数。

  时间复杂度:O(nlogn);空间复杂度O(1)

第二种解法:对数组进行遍历,每次判断哈希表中是否含有该元素,若有,输出此元素。若最后哈希表中的元素数量与数组中的相同,表面无重复数据。

  时间复杂度:O(n);空间复杂度O(n)

 

3、给定一个数组代表股票每天的价格,请问买卖多次的情况下,最大化利润是多少?(日期不重复可买卖多次)

4、给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例: 给定 nums = [2, 7, 11, 15], target = 9

   因为 nums[0] + nums[1] = 2 + 7 = 9
   所以返回 [0, 1]

func main() {
	nums := []int{2, 7, 11, 15}
	target := 9
	fmt.Println(twonum(nums, target))
}

func twonum(nums []int, target int) []int {
	hashTable := map[int]int{}
	for i, x := range nums {
		if p, ok := hashTable[target-x]; ok {
			log.Info(p, ok)
			return []int{p, i}
		}
		hashTable[x] = i
	}
	return nil
}

 

上一篇:我对HashMap家族的一些理解(HashMap、ConcurrentHashMap、HashTable)


下一篇:也许你并不知道的HashMap和HashTable区别