- 开坑从未停止,学习从未开始
菜鸡写leetcode
- 用IDEA插件在办公室写的
- 瞎写的,能过再说
- 不管写的多水,反正编译过了。
[1] 两数之和
//给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。
//
// 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
//
// 你可以按任意顺序返回答案。
//
//
//
// 示例 1:
//
//
//输入:nums = [2,7,11,15], target = 9
//输出:[0,1]
//解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
//
//
// 示例 2:
//
//
//输入:nums = [3,2,4], target = 6
//输出:[1,2]
//
//
// 示例 3:
//
//
//输入:nums = [3,3], target = 6
//输出:[0,1]
//
//
//
//
// 提示:
//
//
// 2 <= nums.length <= 103
// -109 <= nums[i] <= 109
// -109 <= target <= 109
// 只会存在一个有效答案
//
// Related Topics 数组 哈希表
// 👍 10540 👎 0
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int[] twoSum(int[] nums, int target) {
int [] result = new int[2];
for (int i = 0; i < nums.length; i++) {
for (int j = nums.length - 1; j > i ; j--) {
if (nums[i] + nums[j] == target) {
result[0] = i;
result[1] = j;
return result;
}
}
}
return result;
}
}
//leetcode submit region end(Prohibit modification and deletion)
[2] 两数相加
//给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
//
// 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
//
// 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
//
// 示例:
//
// 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
//输出:7 -> 0 -> 8
//原因:342 + 465 = 807
//
// Related Topics 链表 数学
// 👍 5129 👎 0
//leetcode submit region begin(Prohibit modification and deletion)
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode result = new ListNode();
ListNode tempNode1 = l1;
ListNode tempNode2 = l2;
ListNode tempNode3 = result;
// 进位
int num = 0;
int sum = 0;
while (tempNode1 != null && tempNode2 != null) {
sum = (tempNode1.val + tempNode2.val) % 10;
int temp1 = tempNode1.val + tempNode2.val + num;
num = temp1 / 10;
ListNode newNode = new ListNode(temp1 % 10);
tempNode3.next = newNode;
tempNode3 = newNode;
tempNode1 = tempNode1.next;
tempNode2 = tempNode2.next;
}
if (tempNode1 == null && tempNode2 == null) {
// 一样长
if (num == 0) {
return result.next;
}
ListNode endNode = new ListNode(num);
tempNode3.next = endNode;
return result.next;
} else if (tempNode1 == null) {
// l2长
while (tempNode2 != null) {
int temp = tempNode2.val + num;
num = temp / 10;
ListNode newNode = new ListNode(temp % 10);
tempNode3.next = newNode;
tempNode3 = newNode;
tempNode2 = tempNode2.next;
}
if (num == 0 && tempNode2 == null) {
return result.next;
}
ListNode endNode = new ListNode(num);
tempNode3.next = endNode;
} else if (tempNode2 == null) {
// l1长
while (tempNode1 != null) {
int temp = tempNode1.val + num;
num = temp / 10;
ListNode newNode = new ListNode(temp % 10);
tempNode3.next = newNode;
tempNode3 = newNode;
tempNode1 = tempNode1.next;
}
if (num == 0 && tempNode1 == null) {
return result.next;
}
ListNode endNode = new ListNode(num);
tempNode3.next = endNode;
}
return result.next;
}
}
//leetcode submit region end(Prohibit modification and deletion)
[3] 无重复字符的最长子串
//给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
//
//
//
// 示例 1:
//
//
//输入: s = "abcabcbb"
//输出: 3
//解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
//
//
// 示例 2:
//
//
//输入: s = "bbbbb"
//输出: 1
//解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。
//
//
// 示例 3:
//
//
//输入: s = "pwwkew"
//输出: 3
//解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。
// 请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串。
//
//
// 示例 4:
//
//
//输入: s = ""
//输出: 0
//
//
//
//
// 提示:
//
//
// 0 <= s.length <= 5 * 104
// s 由英文字母、数字、符号和空格组成
//
// Related Topics 哈希表 双指针 字符串 Sliding Window
// 👍 5132 👎 0
//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
public int lengthOfLongestSubstring(String s) {
StringBuilder result = new StringBuilder();
int maxLength = 0;
if (s.length() < 2) {
return s.length();
}
for (int i = 0; i < s.length(); i++) {
for (int j = i; j < s.length(); j++) {
if (!result.toString().contains(String.valueOf(s.charAt(j)))) {
result.append(s.charAt(j));
} else {
// 有重复的,中断
int length = result.length();
if (length > maxLength) {
maxLength = length;
}
result.delete(0, length);
break;
}
}
}
return maxLength;
}
}
//leetcode submit region end(Prohibit modification and deletion)