Leetcode刷题记
1.两数之和
暴力指针法
class Solution {
public int[] twoSum(int[] nums, int target) {
for (int i = 0; i < nums.length; i++) {
for (int j = i + 1; j< nums.length; j++) {
if (nums[i] == target - nums[j]) {
return new int[] { i , j };
}
}
}
throw new IllegalArgumentException("No two sum soltion");
}
}
IllegalArgumentException
:参数异常
2.组合两个表
需要用到left join
才可满足条件(无论person
是否有地址信息,都会输出以下信息)
select FirstName,LastName,City,State
from Person left join Address
on Person.PersonId = Address.PersonId
3.判断字符串是否唯一
暴力指针法
class Solution {
public boolean isUnique(String astr) {
for (int i = 0; i < astr.length() - 1; i++) {
if (astr.indexOf(astr.charAt(i) , i+1) != -1) {
return false;
}
}
return true;
}
}
astr.length()
:返回字符串的长度
astr.indexOf(a,b)
:返回a在字符串b的位置开始首次出现的位置
astr.charAt(i)
:返回字符串中i处的字符
4.数组中重复的数字
由题中可知,若数组中未重复,数组的下表必与对应数组值相等。所以从头扫描,遇到重复值返回。
class Solution {
public int findRepeatNumber(int[] nums) {
int temp;
for (int i = 0; i < nums.length; i++) {
while (nums[i] != i) {
if (nums[i] == nums[nums[i]]) {
return nums[i];
}
temp = nums[i];
nums[i] = nums[temp];
nums[temp] = temp;
}
}
return -1;
}
}
nums.length
:返回数组的长度
第一题IllegalArgumentException异常还是有些不明白为什么要用这个异常,希望有大佬帮忙说下,感谢!!!