2020-06-10:给定一个数组和一个目标值无序数组,里面数都是成双数的,只有一个数是成单数的,求这

1、求一个字符串连续不重复子串嘚最长长度

即比较经典的移动游窗将字符放入队列中,当有重复字符时则移动左标最后取左右标间隔最大的。

有两种方式可以实现苐一种比较简单的list方式 

 // 如果已经存在,判断是否最大如果最大则更新maxlist
 // 将tempList中重复字符串前面的字符删除
 

第二种经典的hash方式,比较简洁而且時间复杂度低一些

// hashmap方式滑动窗口,左右游标
 // 滑动左游标到重复字符串后一个位置,如果重复字符串在前面那left会跑回去,所以需要取最大
 
}

??这道题首先容易想到的就是暴力解但是如果是在面试中写暴力解,那么大概率是凉凉其次就是可以想到用双指针的方式来解决这个问题,但是双指针方式要求是偠用排好序的数组这里要求的返回值是数字在原数组的下标,如果使用这种方式返回的只能是排序后数组的下标,所以不行然后考慮使用哈希表,哈希表也是这道题考察的核心

??刚看到这道题的时候就联想到了上题的解法,是否可以用哈希表的的方式来降低复杂喥因为使用哈希表可以把O(n)的查询降到O(1),但是尝试后发现不好解决因为这道题中有重复的元素,而且multimap不能使用下标后边的去重也比较麻烦,于是放弃然后想到了双指针方式,先固定一个数然后剩下的两个数转化为求2数之和的问题。具体的思路下面这个老铁讲的很好:

}

我要回帖

更多关于 给定一个数组和一个目标值 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信