1 有序數組,兩個數的和等于target
//有序數組,兩個數的和等于target
public int[] twoSum(int[] number,int target){
if(number == null ) return null;
int i = 0; j = number.length-1;
while(i<j){
int sum = number[i] + number[j];
if(sum == target){
return new int[]{i+1, j+1};
}
else if (sum < target){
i++
}
else{
j--;
}
}
return null
}
2 兩個數的平方和:判斷一個非負整數是不是兩個整數的平方和
//兩個數的平方和:判斷一個非負整數是不是兩個整數的平方和
public boolean judgeSquareSum(int target){
if(target < 0)
return false;
int i,j=(int)Math.sqrt(target);
for(i< = j){
int sum = i*i + j*j;
if(sum == target){
return true;
}
else if(sum<target){
i++;
}
else{
j--;
}
}
return falase;
}
3 反轉字元串中的元音字元
//反轉字元串中的元音字元
private final static HashSet<Character> vowels = new HashSet(Arrays.asList('a','e','i','o','u','A','E','I','O','U'))
public String reverse(Srting s){
if(s == null)
return null;
int i=0,j=s.length()-1;
char[] result = new char[s.length()];
while(i < = j){
char c1 = s.charAt(i);
char c2 = s.charAt(j);
if(!vowels.contains(c1)){
resule[i++] = c1;
}
else if(!vowels.contains(c2)){
resule[j--] = c2;
}
else{
result[i++] = c2;
result[j--] = c1;
}
}
return new String(result);
}
4 删除一個字元 判斷是不是回文字元串
//删除一個字元 判斷是不是回文字元串
public Boolean validPalindrome(Srting s){
int i=0; j = s.length()-1;
for(int i=0; j = s.length()-1; i < j;){
if(s.charAt(i)!=s.charAt(j))
return ( isHyuWen(s,i+1,j)||isHyuWen(s,i,j-1) );
else{
i++;
j--;
}
}
return true;
}
private boolean isHyuWen(String s, int i,int j){
while(i<j){
if(s.charAt(i++) != s.charAt(j--))
return false;
}
return true
}
5 歸并兩個有序數組
// 歸并兩個有序數組
public void merge(int[] nums1,int m,int[] nums2,int n){
int result[] = new result[m+n];
int i=0,j=0,k=0;
while(i<m-1 && j<n-1){
if(nums[i] <= nums[j]){
result[k++] = nums1[i];
i++;
}
else{
result[k++] = nums2[j];
j++
}
}
if(i < m){
result[k++] = nums1[i];
i++;
}
if(j < n){
result[k++] = nums2[j];
j++;
}
}
// 歸并兩個有序數組
public void merge(int[] nums1,int m,int[] nums2,int n){
int index1 = m -1 , index2 = n -1;
int mergeindex=m+n-1;
while(index1 >= 0 || index2 >=0){
if(nums1[index1] < nums2[index2]){
nums1[mergeindex--] = nums2[index2--];
}
if(nums1[index1] > nums2[index2]){
nums1[mergeindex--] = nums1[index1--];
}
if(index1<0){
nums1[mergeindex--] = nums2[index2--];
}
if(index2<0){
nums1[mergeindex--] = nums1[index1--];
}
}
}
6 判斷連結清單是否存在環
// 判斷連結清單是否存在環
public boolean hasCycle(ListNode head){
ListNode l1 = head.next,l2=l1.next;
if(head=null){
return false;
}
while(l1!=null&&l2!=null&l2.next!=null){
if(l1 == l2){
return true;
}
l1 = l1.next;
l2=l2.next.next;
}
return false;
}