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
}