【数据结构和算法】两种方式解决

两数之和

http://www.nowcoder.com/questionTerminal/20ef0972485e41019e39543e8e895b7f

1,暴力破解法

就是使用两个for循环,这种效率很差

    public int[] twoSum(int[] nums, int target) {
        int length = nums.length;
        for (int i = 0; i < length - 1; i++) {
            for (int j = i + 1; j < length; j++)
                if (nums[i] + nums[j] == target)
                    return new int[]{i+1, j+1};
        }
        return new int[]{-1, -1};
    }

2,使用HashMap解决

    public int[] twoSum(int[] nums, int target) {
        Map<integer, integer> m = new HashMap&lt;&gt;();
        for (int i = 0; i &lt; nums.length; i++) {
            if (m.get(target - nums[i]) != null) {
                return new int[]{m.get(target - nums[i])+1, i+1};
            }
            m.put(nums[i], i);
        }
        return new int[]{0, 0};
    }

如果觉得有用就给个赞吧,还可以关注我的《牛客博客》查看更多的详细题解

数据结构和算法 文章被收录于专栏

专注于算法题的讲解,包含常见数据结构,排序,查找,动态规划,回溯算法,贪心算法,双指针,BFS和DFS等等。

全部评论

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-15 17:17
听说过付费实习,没想到这么贵啊我去,要不我给你个腰子吧
哈哈哈,你是老六:这种公司一定要注意啊,不要随便签合同,只要签了后面钱可能回不来,而且你通过法律途径也弄不回
点赞 评论 收藏
分享
评论
42
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务