LeetCode热题100道-Day01
- 使用两层for循环遍历数组,让数组的所有两数之和与target比较,得出下标存储在新数组然后返回。
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] a = new int[2];
lab:
for(int i=0;i<nums.length;i++){
for(int j=i+1;j<nums.length;j++){
if(target == nums[i]+nums[j]){
a[0]=i;
a[1]=j;
break lab;
}
}
}
return a;
}
}
- 创建两个空结点l3和l4,如果l1和l2都不为null,则把val相加,用结果创建新结点,l3指向头结点,l4指向尾结点,之后l1和l2各自指向自己的下一个结点,直到跳出循环。
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode l3 = null;
ListNode l4 = l3;
int carry = 0;
while(l1 != null || l2 != null || carry != 0){
int a = l1 != null ? l1.val : 0;
int b = l2 != null ? l2.val : 0;
int c = a + b + carry;
if(l3 == null){
l3 =l4 = new ListNode(c % 10);
}else{
l4.next = new ListNode(c % 10);
l4 = l4.next;
}
carry = c / 10 ;
if(l1 != null){
l1 = l1.next;
}
if(l2 != null){
l2 = l2.next;
}
}
return l3;
}
}
- 创建一个数组并初始化为-1,用for循环把字符串的字符转换为数字,a数组记录字符在字符串中的位置,start记录重复字符第一次出现的位置,val记录无重复的子串的大小。
class Solution {
public int lengthOfLongestSubstring(String s) {
int[] a = new int[128];
for(int i = 0; i < a.length; i++){
a[i] = -1;
}
int n = s.length();
int val = 0;
int start = 0;
for(int i = 0; i < n; i++){
int index = s.charAt(i);
start = Math.max(start, a[index] + 1);
val = Math.max(val, i - start + 1);
a[index] = i;
}
return val;
}
}