Two Sum & Two Sum II - Input array is sorted & Two Sum IV - Input is a BST
时间:2019-03-19
本文章向大家介绍Two Sum & Two Sum II - Input array is sorted & Two Sum IV - Input is a BST,主要包括Two Sum & Two Sum II - Input array is sorted & Two Sum IV - Input is a BST使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1. Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactlyone solution, and you may not use the same element twice.
Example:
Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9, return [0, 1].
1 int* twoSum(int* nums, int numsSize, int target) {
2 int *sValue = (int *)malloc(2 * sizeof(int));
3 for(int i = 1; i < numsSize; i++)
4 {
5 for(int j = 0; j < i; j++)
6 {
7 if(nums[i] + nums[j] == target)
8 {
9 sValue[0] = i;
10 sValue[1] = j;
11 return sValue;
12 }
13 }
14 }
15 return NULL;
16 }
解题思路:
嵌套两层循环: 第一层:1 <= i <= numsSize
第二层: 0 <= j < (i - 1)因为i的取值是第二个及后面的数据,那么j就要取i前面的数据与i相加才能避免使数据做重复的相加
当nums[i] + nums[j] == target 成立就可得到答案
167. Two Sum II - Input array is sorted
Given an array of integers that is already sorted in ascending order, 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.
Note:
- Your returned answers (both index1 and index2) are not zero-based.
- You may assume that each input would have exactly one solution and you may not use the same element twice.
Example:
Input: numbers = [2,7,11,15], target = 9
Output: [1,2]
Explanation: The sum of 2 and 7 is 9. Therefore index1 = 1, index2 = 2.
int* twoSum(int* numbers, int numbersSize, int target, int* returnSize) {
*returnSize = 2;
int *Array = NULL;
for(int i = 1; i < numbersSize; i++)
{
for(int j = 0; j < i; j++)
{
if(numbers[i] + numbers[j] == target)
{
Array = (int *)malloc(*returnSize * sizeof(int));
Array[0] = j + 1;
Array[1] = i + 1;
return Array;
}
}
}
return NULL;
}
653. Two Sum IV - Input is a BST
Given a Binary Search Tree and a target number, return true if there exist two elements in the BST such that their sum is equal to the given target.
Example 1:
Input:
5
/ \
3 6
/ \ \
2 4 7
Target = 9
Output: True
Example 2:
Input:
5
/ \
3 6
/ \ \
2 4 7
Target = 28
Output: False
1 bool findValue(struct TreeNode* root, struct TreeNode* temp, int k) 2 { 3 if(!temp) 4 { 5 return false; 6 } 7 if(temp->val == k && temp != root) 8 { 9 return true; 10 } 11 if(k > temp->val) 12 { 13 return findValue(root, temp->right, k); 14 } 15 else 16 { 17 return findValue(root, temp->left, k); 18 } 19 } 20 21 bool findX(struct TreeNode* root, struct TreeNode* temp, int k) 22 { 23 if(!root) 24 { 25 return false; 26 } 27 if(findValue(root, temp, k - root->val)) 28 { 29 return true; 30 } 31 else 32 { 33 return (findX(root->left, temp, k) || findX(root->right, temp, k)); 34 } 35 } 36 37 bool findTarget(struct TreeNode* root, int k) { 38 struct TreeNode* pTemp = root; 39 return findX(root, pTemp, k); 40 }
代码27行的k - root->val表示 目标数 减去 二叉树中某一个数剩下的那个数据,如果递归查找树能找到与k - root->val相等的数并且不是同一个节点的数据(第7行有做判断)说明存在两个相加等于目标的数。
- Dubbo(三) 安装Zookeeper 单机-集群
- ASP.NET MVC Preview生命周期分析
- Dubbo(二) 认识Zookeeper
- Kafka源码系列之使用要点总结及重要错误解决
- Kafka源码系列之实现自己的kafka监控
- Kafka源码系列之副本同步机制及isr列表更新
- Kafka源码系列之topic创建分区分配及leader选举
- Kafka源码系列之如何删除topic
- Kafka源码系列之kafka如何实现高性能读写的
- Kafka源码系列之分组消费的再平衡策略
- Kafka源码系列之Consumer高级API性能分析
- Kafka源码系列之源码解析SimpleConsumer的消费过程
- Spark调优系列之序列化方式调优
- Spark源码系列之foreach和foreachPartition的区别
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一天一大 leet(魔术索引)难度:简单-Day20200731
- 一天一大 lee(回文对)难度:困难-Day20200806
- 一天一大 lee(扫雷游戏)难度:中等-Day20200820
- 一天一大 lee(重新安排行程)难度:中等-Day20200827
- 一天一大 lee(机器人能否返回原点)难度:简单-Day20200828
- 一天一大 lee(有序链表转换二叉搜索树)难度:中等-Day20200818
- 一天一大 lee(钥匙和房间)难度:中等-Day20200831
- 一天一大 lee(最短回文串)难度:困难-Day20200829
- 一天一大 lee(预测赢家)难度:中等-Day20200901
- 一天一大 lee(反转字符串中的单词 III)难度:简单-Day20200830
- 一天一大 lee(平衡二叉树)难度:简单-Day20200817
- 一天一大 lee(组合总和)难度:中等-Day20200909
- 一天一大 lee(回文子串)难度:中等-Day20200819
- 一天一大 lee(组合)难度:中等-Day20200908
- es6学习笔记