217.存在重复元素
方法1:使用Arrays.sort()函数,对数组进行排序,比较排序后的数组相邻元素是否存在相等情况;
方法2:使用list超出时间限制;
方法3:利用哈希表,其实利用哈希表,我这个代码写的不好,进行优化
class Solution {
public boolean containsDuplicate(int[] nums) {
//方法1:
// Arrays.sort(nums);
// for(int i = 1;i < nums.length;i++){
// if(nums[i] == nums[i-1])
// {
// return true;
// }
// }
// return false;
//方法2:利用list
// List list = new ArrayList();
// list.add(nums[0]);
// for(int i = 1;i < nums.length;i++)
// {
// if(list.contains(nums[i])){
// return true;
// }else{
// list.add(nums[i]);
// }
// }
// return false;
// 方法3:利用set
// Set set = new HashSet();
// int len = nums.length;
// for(int i = 0;i < len;i++){
// set.add(nums[i]);
// }
// if(len>set.size())
// {
// return true;
// }
// return false;
//方法3优化
Set set = new HashSet();
for(int i = 0;i < nums.length;i++){
if(set.contains(nums[i]))
{
return true;
}
else{
set.add(nums[i]);
}
}
return false;
}
}
53.最大子数组和
动态规划思想:可以当成一个通式
class Solution {
public int maxSubArray(int[] nums) {
int cur = 0,res = nums[0];
for(int i = 0;i < nums.length;i++)
{
cur = Math.max(cur + nums[i],nums[i]);
res = Math.max(cur,res);
}
return res;
}
}