返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#算法之两数之和
  • 547
分享到

C#算法之两数之和

2024-04-02 19:04:59 547人浏览 独家记忆
摘要

题目 给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每

题目

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

你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

提示:不能自身相加。

测试用例

[2,7,11,15]

9

预期结果

[0,1]

 格式模板

public class Solution {
    public int[] TwoSum(int[] nums, int target) {
    
        }
    }

笔者的代码,仅供参考

使用暴力方法,运行时间 700ms-1100ms

public class Solution {
    public int[] TwoSum(int[] nums, int target) {
         int [] a = new int[2];
            for (int i = 0; i < nums.Length - 1; i++)
            {
                for (int j = i + 1; j < nums.Length; j++)
                {
                    if (nums[i] + nums[j] == target)
                    {
                        a[0] = i;
                        a[1] = j;
                    }
                }
            }
            return a;
        }
    }

运行时间 400ms-600ms

由于使用的是哈希表,所以缺点是键不能相同。

public class Solution {
    public int[] TwoSum(int[] nums, int target) {
                     int[] a = new int[2];
            System.Collections.Hashtable hashtable = new System.Collections.Hashtable();
            for(int i = 0; i < nums.Length; i++)
            {
                hashtable.Add(nums[i], i);
            }
            for(int i = 0; i < nums.Length; i++)
            {
                int complement = target - nums[i];
                if (hashtable.ContainsKey(complement) && int.Parse(hashtable[complement].ToString())!=i)
                {
                    a[0] = i;
                    a[1] = int.Parse(hashtable[complement].ToString());
                }
            }
            return a;
        }
    }

还是哈希表,缺点是哈希表存储的类型是object,获取值时需要进行转换。

        public int[] TwoSum(int[] nums, int target)
        {
            int[] a = new int[2];
            System.Collections.Hashtable h = new System.Collections.Hashtable();
            for (int i = 0; i < nums.Length; i++)
            {
                int c = target - nums[i];
                if (h.ContainsKey(c))
                {
                    a[0] = int.Parse(h[c].ToString()) <= nums[i] ? int.Parse(h[c].ToString()) : i;
                    a[1] = int.Parse(h[c].ToString()) > nums[i] ? int.Parse(h[c].ToString()) : i;
                }
                else if (!h.ContainsKey(nums[i]))
                {
                    h.Add(nums[i], i);
                }
            }
            return a;
        }

抄一下别人的

public class Solution
{
    public int[] TwoSum(int[] nums, int target)
    {
        int[] res = {0, 0};
        int len = nums.Length;
        Dictionary<int, int> dict = new Dictionary<int, int>();
        for (int i = 0; i < len; i++)
        {
            int query = target - nums[i];
            if (dict.ContainsKey(query))
            {
                int min = (i <= dict[query]) ? i : dict[query];
                int max = (i <= dict[query]) ? dict[query] : i;
                return new int[] { min, max };
            }
            else if (!dict.ContainsKey(nums[i]))
            {
                dict.Add(nums[i], i);
            }
        }

        return res;
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#算法之两数之和

本文链接: https://lsjlt.com/news/162496.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C#算法之两数之和
    题目 给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每...
    99+
    2024-04-02
  • C#算法如何实现两数之和
    小编给大家分享一下C#算法如何实现两数之和,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目给定一个整数数组 nums和一个目标值 targe...
    99+
    2023-06-26
  • C++怎么求两数之和
    这篇文章主要讲解了“C++怎么求两数之和”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么求两数之和”吧!两数之和解法一:class TwoSum {public:...
    99+
    2023-06-20
  • C#算法之回文数
    回文数 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121...
    99+
    2024-04-02
  • 算法15. 三数之和_(c语言版)
    1. 题目描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums...
    99+
    2023-06-03
  • 使用python实现两数之和的画解算法
    题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对...
    99+
    2024-04-02
  • C#算法之整数反转
    题目 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 示例 1: 输入: 123 输出: 321  示例 2: 输入: -123 输出:...
    99+
    2024-04-02
  • c语言如何实现两数之和
    目录c语言实现两数之和c语言中比较两数大小题目要求分析一下c语言实现两数之和 int *twoSum(int *nums , int numsSize , int target , ...
    99+
    2024-04-02
  • Leetcode 1:两数之和
    给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = ...
    99+
    2023-01-31
    之和 Leetcode
  • C++实现LeetCode(167.两数之和之二 - 输入数组有序)
    [LeetCode] 167.Two Sum II - Input array is sorted 两数之和之二 - 输入数组有序 Given an array of integer...
    99+
    2024-04-02
  • C++实现LeetCode(170.两数之和之三 - 数据结构设计)
    [LeetCode] 170. Two Sum III - Data structure design 两数之和之三 - 数据结构设计 Design and implement a ...
    99+
    2024-04-02
  • python如何求两数之和及多数之和
    目录python求两数之和及多数之和(1)求两整数A和B之和(2)求多数之和python字典解两数之和两数之和思路总结python求两数之和及多数之和 (1)求两整数A和B之和 要求...
    99+
    2022-12-20
    python两数之和 python多数之和 python求和
  • C#算法之罗马数字转整数
    罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I ...
    99+
    2024-04-02
  • C++算法精讲之贪心算法
    目录选择排序平衡字符串买股票的最佳时机跳跃游戏钱币找零多机调度问题活动选择无重叠区间选择排序 我们熟知的选择排序,其采用的就是贪心策略。 它所采用的贪心策略即为每次从未排序的数据中选...
    99+
    2024-04-02
  • C#算法之散列表
    目录1.散列函数正整数浮点数字符串组合键将 HashCode() 的返回值转化为一个数组索引自定义的 HashCode软缓存2.基于拉链法的散列表散列表的大小删除操作有序性相关的操作...
    99+
    2024-04-02
  • C++图论之Bellman-Ford算法和SPFA算法的实现
    目录Bellman-Ford算法例题:AcWing 853. 有边数限制的最短路算法步骤代码实现SPFA算法代码实现给定一张有向图,若对于图中的某一条边(x,y,z),有dist[y...
    99+
    2024-04-02
  • C++求两数之和并返回下标详解
    目录给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。ACM模式核心代码模式方法一:创...
    99+
    2024-04-02
  • javascript怎么求两数之和(5种方法)
    在编程中,求两个数之和是一个非常基本的操作。在javascript中,可以使用多种方法来实现求和操作。下面将介绍几种常见的方法。方法一:使用加法运算符最简单的方法是使用加法运算符“+”,例如:var a = 1; var b = 2; va...
    99+
    2023-05-14
  • C#算法之各位相加
    各位相加 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 ...
    99+
    2024-04-02
  • C语言算法练习之数组求素数
    目录一、问题描述二、算法实例编译环境三、算法实例实现过程3.1、包含头文件3.2、声明数组3.3、声明相关变量3.4、数组赋值3.5、 输出数组里面元素的值3.6、求素数、素数和、最...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作