【计题01组001号】LeetCode刷题笔记001

1.两数之和

【1】题目描述

给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值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<=104
-109<=nums[i]<=109
-109<=target<=109
只会存在一个有效答案
进阶:你可以想出一个时间复杂度小于O(n2)的算法吗?

【2】涉及知识点:数组+简单计算

【3】分析与解答:这道题的数据构成不难,只需要用两层循环套一下就可以了,当然这想进阶还不行

【4】代码设计

【C++】

点击查看代码
class Solution {
public:
        vector<int> twoSum(vector<int>& nums, int target) {
            int i,j;
            for(i=0;i<nums.size();i++){
                for(j=i+1;j<nums.size();j++){
                    if(nums[i]+nums[j]==target){
                        return {i,j};
                    }
            }
            }
            return {i,j};
    }
};

【JAVA】

点击查看代码
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]+nums[j]==target){
                    return new int[]{i,j};
                }
        }
    }
    return null;
}
}

2.两数相加

【1】题目描述

给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。

请你将两个数相加,并以相同形式返回一个表示和的链表。

你可以假设除了数字0之外,这两个数都不会以0开头。

【计题01组001号】LeetCode刷题笔记001

示例1:


输入:l1=[2,4,3],l2=[5,6,4]
输出:[7,0,8]
解释:342+465=807.
示例2:

输入:l1=[0],l2=[0]
输出:[0]
示例3:

输入:l1=[9,9,9,9,9,9,9],l2=[9,9,9,9]
输出:[8,9,9,9,0,0,0,1]

提示:

每个链表中的节点数在范围[1,100]内
0<=Node.val<=9
题目数据保证列表表示的数字不含前导零

【2】涉及知识点

【3】分析与解答

【4】代码设计

3.无重复字符的最长子串

【1】题目描述

给定一个字符串s,请你找出其中不含有重复字符的最长子串的长度。

 

示例1:

输入:s="abcabcbb"
输出:3
解释:因为无重复字符的最长子串是"abc",所以其长度为3。
示例2:

输入:s="bbbbb"
输出:1
解释:因为无重复字符的最长子串是"b",所以其长度为1。
示例3:

输入:s="pwwkew"
输出:3
解释:因为无重复字符的最长子串是"wke",所以其长度为3。
请注意,你的答案必须是子串的长度,"pwke"是一个子序列,不是子串。
示例4:

输入:s=""
输出:0

【2】涉及知识点

【3】分析与解答

【4】代码设计

4.寻找两个正序数组的中位数

【1】题目描述

给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。

算法的时间复杂度应该为O(log(m+n))。

 

示例1:

输入:nums1=[1,3],nums2=[2]
输出:2.00000
解释:合并数组=[1,2,3],中位数2
示例2:

输入:nums1=[1,2],nums2=[3,4]
输出:2.50000
解释:合并数组=[1,2,3,4],中位数(2+3)/2=2.5
示例3:

输入:nums1=[0,0],nums2=[0,0]
输出:0.00000
示例4:

输入:nums1=[],nums2=[1]
输出:1.00000
示例5:

输入:nums1=[2],nums2=[]
输出:2.00000

【2】涉及知识点

【3】分析与解答

【4】代码设计

5.最长回文子串

【1】题目描述

示例1:

输入:s="babad"
输出:"bab"
解释:"aba"同样是符合题意的答案。
示例2:

输入:s="cbbd"
输出:"bb"
示例3:

输入:s="a"
输出:"a"
示例4:

输入:s="ac"
输出:"a"

【2】涉及知识点

【3】分析与解答

【4】代码设计

上一篇:建模杂谈系列88 项目元数据实践6-PM2实现过程回顾


下一篇:201604深圳云栖大会Workshop - 阿里容器服务与持续集成