菜鸡写leetcode

  • 开坑从未停止,学习从未开始

菜鸡写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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值