栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

LeetCode刷题--点滴记录001

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode刷题--点滴记录001

1. 两数之和

要求

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

解题— —暴力破解

C++版本
#include 
using namespace std;
#include 

void printVector(vector& v)
{
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;
}

class Solution 
{
public:
	vector twoSum(vector& nums, int target)
	{
        vector ans;
        for (int i = 0; i < nums.size(); i++)
        {
            for (int j = i + 1; j < nums.size(); j++)
            {
                if (nums[i] + nums[j] == target)
                {
                    ans.push_back(i);
                    ans.push_back(j);
                    return ans;
                }
            }
        }
        return ans;
    };
};
void test01()
{
    Solution s;
    vector nums;
    nums.push_back(2);
    nums.push_back(7);
    nums.push_back(11);
    nums.push_back(15);
    printVector(nums);

    int target = 9;

    vector result;
    result = s.twoSum(nums,target);
    printVector(result);
}
void test02()
{
    Solution s;
    vector nums;
    nums.push_back(3);
    nums.push_back(2);
    nums.push_back(4);
    printVector(nums);

    int target = 6;

    vector result;
    result = s.twoSum(nums, target);
    printVector(result);
}
void test03()
{
    Solution s;
    vector nums;
    nums.push_back(3);
    nums.push_back(3);
    printVector(nums);

    int target = 6;

    vector result;
    result = s.twoSum(nums, target);
    printVector(result);
}
int main()
{
    test01();
    cout << "------------------" << endl;
    test02();
    cout << "------------------" << endl;
    test03();

	system("pause");
	return 0;
}

Python版本
class Solution:
    def twoSum(self,nums,target):
        for i in range(0,len(nums)):
            for j in range(i+1,len(nums)):
                if nums[i]+nums[j] == target:
                    return [i,j]

def test01():
    nums = [2,7,11,15]
    target = 9
    s = Solution()
    print(s.twoSum(nums,target))
    
def test02():
    nums = [3,2,4]
    target = 6
    s = Solution()
    print(s.twoSum(nums,target))
    
def test03():
    nums = [3,3]
    target = 6
    s = Solution()
    print(s.twoSum(nums,target))
    
            
if __name__=="__main__":
    test01()
    print("--------------")
    test02()
    print("--------------")
    test03()

Java版本
package com.hailei_01;

public class TwoSum {
    public static void main(String[] args) {
        int[] nums1 = {2,7,11,15};
        int target1 = 9;
        int[] result1 = twoSum(nums1, target1);
        System.out.println(arrayToString(result1));
        System.out.println("-------------------");
        int[] nums2 = {3,2,4};
        int target2 = 6;
        int[] result2 = twoSum(nums2, target2);
        System.out.println(arrayToString(result2));
        System.out.println("-------------------");
        int[] nums3 = {3,3};
        int target3 = 6;
        int[] result3 = twoSum(nums3, target3);
        System.out.println(arrayToString(result3));
    }

    public static int[] twoSum(int[] nums, int target) {
        int []ans=new int[2];
        for(int i=0;i
            for(int j=(i+1);j
                if(nums[i]+nums[j]==target){
                    ans[0]=i;
                    ans[1]=j;
                    return ans;
                }
            }
        }
        return ans;
    }

    //把数组中的元素按照指定规则组成一个字符串
    public static String arrayToString(int[] arr) {
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                sb.append(arr[i]);
            } else {
                sb.append(arr[i]).append(",");
            }
        }
        sb.append("]");
        String s = sb.toString();
        return s;
    }

}


解题— —升级

C++版本
#include 
using namespace std;
#include 
#include 

void printVector(vector& v)
{
    for (vector::iterator it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }
    cout << endl;
}

class Solution {
public:
    vector twoSum(vector& nums, int target) {
        map a;
        vector b(2, -1);
        for (int i = 0; i < nums.size(); i++)
            a.insert(pair(nums[i], i));
        for (int i = 0; i < nums.size(); i++)
        {
            if (a.count(target - nums[i]) > 0 && (a[target - nums[i]] != i))
            {
                b[0] = i;
                b[1] = a[target - nums[i]];
                break;
            }
        }
        return b;
    };
};

void test01()
{
    Solution s;
    vector nums;
    nums.push_back(2);
    nums.push_back(7);
    nums.push_back(11);
    nums.push_back(15);
    printVector(nums);

    int target = 9;

    vector result;
    result = s.twoSum(nums,target);
    printVector(result);
}
void test02()
{
    Solution s;
    vector nums;
    nums.push_back(3);
    nums.push_back(2);
    nums.push_back(4);
    printVector(nums);

    int target = 6;

    vector result;
    result = s.twoSum(nums, target);
    printVector(result);
}
void test03()
{
    Solution s;
    vector nums;
    nums.push_back(3);
    nums.push_back(3);
    printVector(nums);

    int target = 6;

    vector result;
    result = s.twoSum(nums, target);
    printVector(result);
}
int main()
{
    test01();
    cout << "------------------" << endl;
    test02();
    cout << "------------------" << endl;
    test03();

	system("pause");
	return 0;
}

Python版本
class Solution:
    def twoSum(self, nums, target):
        hashmap = {}
        for ind,num in enumerate(nums):
            hashmap[num] = ind
        for i,num in enumerate(nums):
            j = hashmap.get(target - num)
            if j is not None and i!=j:
                return [i,j]         

def test01():
    nums = [2,7,11,15]
    target = 9
    s = Solution()
    print(s.twoSum(nums,target))
    
def test02():
    nums = [3,2,4]
    target = 6
    s = Solution()
    print(s.twoSum(nums,target))
    
def test03():
    nums = [3,3]
    target = 6
    s = Solution()
    print(s.twoSum(nums,target))
    
            
if __name__=="__main__":
    test01()
    print("--------------")
    test02()
    print("--------------")
    test03()

Java版本
package com.hailei_02;

import java.util.HashMap;

public class TwoSum {
    public static void main(String[] args) {
        int[] nums1 = {2,7,11,15};
        int target1 = 9;
        int[] result1 = twoSum(nums1, target1);
        System.out.println(arrayToString(result1));
        System.out.println("-------------------");
        int[] nums2 = {3,2,4};
        int target2 = 6;
        int[] result2 = twoSum(nums2, target2);
        System.out.println(arrayToString(result2));
        System.out.println("-------------------");
        int[] nums3 = {3,3};
        int target3 = 6;
        int[] result3 = twoSum(nums3, target3);
        System.out.println(arrayToString(result3));
    }

    public static int[] twoSum(int[] nums, int target) {

        int[] arr=new int[2];
        HashMap map=new HashMap();
        for(int i=0;i
            if(map.containsKey(target-nums[i])){
                arr[0]=map.get(target-nums[i]);
                arr[1]=i;
            }
            map.put(nums[i],i);
        }
        return arr;
    }

    //把数组中的元素按照指定规则组成一个字符串
    public static String arrayToString(int[] arr) {
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                sb.append(arr[i]);
            } else {
                sb.append(arr[i]).append(",");
            }
        }
        sb.append("]");
        String s = sb.toString();
        return s;
    }
}


希望本文对大家有帮助,上文若有不妥之处,欢迎指正

分享决定高度,学习拉开差距

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/953760.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号