# 20180701_ARTS_week01

ARTS 是耗子哥（左耳朵耗子）发起的一个活动。 A -- Algorithm 每周一道算法题 R -- Review 每周阅读并点评一篇英文技术文章 T -- Tip 每周学习一个技术技巧 S -- Share 每周分享一篇技术文章 坚持一年 :-) 这是我的第一周 ARTS

## Algorithm

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 exactly one 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].```

```var twoSum = function (nums, target) {
var numDict = {},
numDictRepeat = {}
for (var i=0; i<nums.length; i+=1) {
// numDict[nums[i]] = i; // key: integers, value: the indice position

var curVal = nums[i]
if (typeof numDict[curVal] !== "undefined") {
numDictRepeat[curVal] = i
} else {
numDict[curVal] = i
}

var num2Pos = numDict[target - curVal]

if (typeof num2Pos !== "undefined" && num2Pos !== i) {
if (num2Pos === i ) {
num2Pos = numDictRepeat[target - curVal]
}
return [i, num2Pos].sort()
}
}
return []
};

var nums = [3,3], target = 6
rs = twoSum(nums, target)
console.log(rs)```

```var twoSum = function (nums, target) {
var history = {}
for (var i=0; i<nums.length; i+=1) {
var curVal = nums[i]
if (typeof history[curVal] !== "undefined" &&  (curVal + curVal) == target ) {
// 同数不同位置，想加又刚好是 target 3+3=6
// if (curVal + curVal == target) {
//     return [history[curVal], i]
// }
return [history[curVal], i]
} else {
// key: integers, value: the indice position
history[curVal] = i
}

var num1 = nums[i],
num2Pos = history[target - num1]

if (typeof num2Pos != "undefined" && num2Pos != i) {
return [num2Pos, i]
}
}
return []
};

// [3,3],[3,2,4]
var nums = [2, 7, 11, 15], target = 9
rs = twoSum(nums, target)
console.log(rs)```

```var twoSum = function (nums, target) {
var history = {}
for (var i = 0; i < nums.length; i += 1) {
var curVal = nums[i],
num2Pos = history[target - curVal]

if (typeof num2Pos != "undefined") {
return [num2Pos, i]
}
history[curVal] = i
}
return []
};

// [3,3] = 6, [3,2,4] = 6
var nums = [2, 7, 11, 15], target = 9
rs = twoSum(nums, target)
console.log(rs)```

## Review

The deepest reason why modern JavaScript frameworks exist

## Share

```1. 坑比较多，有平台兼容性的，有 React Native 本身的，缺少完善的 debug 工具，debug 耗费的时间较多；
2. 以前终端提供给 web 的接口，需要再封装一遍提供给 React Native；
3. React Native 相比纯终端，能力上都有很大限制，有些能力不具备的时候，需要终端提供支持，比如视频播放器，音频播放器；
4. 我们比较注重页面打开速度，React Native 首次进入的速度不如做了一些优化的 Web，二次进入的速度会好很多，
5. 一些比较复杂的交互无法实现，动画能力较弱。```

63 篇文章32 人订阅

0 条评论

## 相关文章

### JavaScript就要统治世界了？

" JavaScript 可以……" "嘛，不就是操作一下 DOM，可以让元素飞来飞去吗" "JavaScript 是……" "不就是用 jQuery 让网页动...

35260

46470

### 2017年前端开发手册（二）-2017前端技术展望

1. Web Assembly, 获取刚刚到达顶峰。 2. `import`可能仅仅被用在`<script></script>`中。 3. 通用JavaScri...

36360

82260

1K50

### 从小白到独立开发Android和IOS两种平台app过程与总结

16年上半年在帮老师，帮外面随便做点东西以便得到些生活费养活自己。下半年去外面公司待了一段时间，然后选择回来帮自己做个东西，历时三个月，独自完成安卓及IOS版本...

18710

22850

25050

9730

### 以最简单的登录为例，诠释JS面向对象的简单实例

JavaScript，是前端开发人员必须会的一门技术，从JS演变出来的有很多框架，先说说几个热门的框架吧： JQuery：这个技术必须会，如果不会，那一定要会查...

34670