Two Sum-LeetCode-弱菜进击之路

下面是我copy过来的原题!据说leetcode里面好多编程题目都是BAT的笔试题,所以为了校招 我就拿来练手了!

Given an array of integers, find two numbers such that they add up to a specific target number.

The function twoSum should return indices of the two numbers such that they add up to the target, where index1 must be less than index2. Please note that your returned answers (both index1 and index2) are not zero-based.

You may assume that each input would have exactly one solution.

Input: numbers={2, 7, 11, 15}, target=9
Output: index1=1, index2=2

说好的奋斗呢!
小小的翻译下:

给出一个整型数组,从给定的数组中找到两个数加起来等于给出的目标值 (target) 需要注意的是!这里的返回值起始不是0 开始的!


然后呢!这是我自己写的一个小小代码!

之前我尝试不用hash 直接嵌套两个for循环 结果就是悲剧的time out!次奥 好吧,那我就换成hash!你赢了!

下面的代码我没有注释= = 我这样的菜鸟都能看懂 也许大家就更加OK了!大笑


import java.util.HashMap;



public class Solution {

	public int[] twoSum(int[] numbers, int target) {
		int indices[] = new int[2];
		int temp;
		
		HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
		
		for (int i = 0; i < numbers.length; i++) {
			map.put(numbers[i],i);
		}
		for (int i = 0; i < numbers.length; i++) {
			if(map.get(target-numbers[i])!=null && map.get(target-numbers[i])!=i){
				indices[0] = i + 1;
				indices[1] = map.get(target-numbers[i])+1;
				if(indices[0]>indices[1]){
					temp = indices[0];
					indices[0] = indices[1];
					indices[1] = temp;
				}
			}
			else
				continue;
		}
		
		
		
		return indices;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是电话号码的字母组合问题的 C++ 代码实现: ``` class Solution { public: vector<string> letterCombinations(string digits) { unordered_map<char, string> mapping = { {'2', "abc"}, {'3', "def"}, {'4', "ghi"}, {'5', "jkl"}, {'6', "mno"}, {'7', "pqrs"}, {'8', "tuv"}, {'9', "wxyz"} }; vector<string> res; if (digits.empty()) { return res; } string combination; backtrack(res, combination, digits, 0, mapping); return res; } void backtrack(vector<string>& res, string& combination, string& digits, int index, unordered_map<char, string>& mapping) { if (index == digits.size()) { res.push_back(combination); return; } for (char c : mapping[digits[index]]) { combination.push_back(c); backtrack(res, combination, digits, index + 1, mapping); combination.pop_back(); } } }; ``` 其中 `letterCombinations` 函数用来生成所有的字母组合,`backtrack` 函数用来进行回溯操作。在 `letterCombinations` 函数中,首先根据数字字符和字母的映射关系创建了一个 `unordered_map` 对象 `mapping`。然后定义了一个空字符串 `combination` 和一个空 vector `res` 来保存最终结果。最后调用了 `backtrack` 函数来生成所有的字母组合。在 `backtrack` 函数中,首先判断是否达到了数字字符串的末尾,如果是,则将当前的 `combination` 字符串保存到 `res` 中。否则,遍历当前数字字符所能表示的所有字母,依次加入到 `combination` 字符串中,然后递归调用 `backtrack` 函数,添加下一个数字字符所能表示的字母。递归完成后,需要将 `combination` 字符串还原到上一个状态,以便进行下一次回溯。最终返回 `res` 数组即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值