- 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
class Solution {
public int[] twoSum(int[] nums, int target) {
Map map = new HashMap();
map.put(nums[i],i)
for(int i=0;i<nums.length,i++){
if(map.containsKey(target-nums[i])){
return new int[]{
map.get(target-nums[i]),i
}
}
}
}
}
- 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。
class Solution {
public int removeDuplicates(int[] nums) {
int p=0;
int q=1;
if(nums.length==0){
return 0;
}
while(q<nums.length){
if(nums[p]!=nums[q]){
nums[p+1]=nums[q];
p++;
}
q++;
}
return p+1;
}
}
- 给定一个整数数组,判断是否存在重复元素。
class Solution {
public boolean containsDuplicate(int[] nums) {
for(int i=0;i<nums.length;i++){
for(int j=0;j<i;j++){
if(nums[i]==nums[j]){
return true;
}
}
}
return false;
}
}
- 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
输入:nums = [-2,1,-3,4,-1,2,1,-5,4] 输出:6 解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。
class Solution {
public int maxSubArray(int[] nums) {
if(nums.length==1){
return nums[0];
}
int maxA=nums[0];
int sum=nums[0];
for(int i=0;i<nums.length;i++){
sum=Math.max(sum,0);
sum=sum+nums[i];
maxA=Math.max(maxA,sum);
}
return maxA;
}
}
- 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
class Solution {
public int searchInsert(int[] nums, int target) {
int n=nums.length;
int i=0;
int j=n-1;
int ans=n;
while(i<=j){
mid=((j-i)>>1)+i;
if(target<=nums[mid]){
ans=mid;
j=mid-1;
}else{
i=mid+1;
}
}
return ans;
}
}