给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。

请必须使用时间复杂度为 O(log n) 的算法。

自己想到的解法,时间复杂度为 O(n):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
let length = nums.length;

if (target <= nums[0]) {
return 0;
} else if (target === nums[length - 1]) {
return length - 1;
} else if (target > nums[length - 1]) {
return length;
} else {
let flag = false;
for (let i = 0; i < nums.length; i++) {
if (target === nums[i]) return i;
else flag = true;
}

if (flag) {
for (let i = 0; i < nums.length; i++) {
if (target >= nums[i] && target <= nums[i + 1]) {
return i + 1;
}
}
}
}
阅读全文 »


  1. 修改文档背景色

参考原文,记录备查!

修改路径:打开 Acrobat DC 点击编辑 ==> 首选项 ==> 辅助工具 ==> 文档颜色选项 ==> 自定义颜色。

几种柔和的背景色配色方案:

1
2
3
4
5
6
7
8
9
10
Typora颜色:(255,251,232)
下面的颜色部分转载于(https://www.jianshu.com/p/bbe9ce62e5a2)
河白色 FFFFFF rgb(255, 255, 255)
杏仁黄 FAF9DE rgb(250, 249, 222)
秋叶褐 FFF2E2 rgb(255, 242, 226)
胭脂红 FDE6E0 rgb(253, 230, 224)
青草绿 E3EDCD rgb(227, 237, 205)
海天蓝 DCE2F1 rgb(220, 226, 241)
葛巾紫 E9EBFE rgb(233, 235, 254)
极光灰 EAEAEF rgb(234, 234, 239)
  1. 快速高亮文本

参考原文,要启用单键快捷方式,请打开“首选项”对话框(“编辑”>“首选项”),然后在“一般”下,选择“使用单键加速键访问工具”选项。 展开页面右侧导航,选择 注释 ,点击 高亮文本 工具,可实现鼠标左键双击高亮文本。

1
选定当前高亮标记工具 U


自己想到的解法,就是循环遍历数组中的每一个元素,求出左侧数之和和右侧数之和,然后判断是否相等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var pivotIndex = function (nums) {
for (let i = 0; i < nums.length; i++) {
let sumLeft = 0;
let sumRight = 0;

// 1.求左侧数之和
for (let l = 0; l < i; l++) {
sumLeft += nums[l];
}

// 2.求右侧数之和
for (let r = i + 1; r < nums.length; r++) {
sumRight += nums[r];
}

// 判断
if (sumLeft === sumRight) {
return i;
} else if (i === nums.length - 1) {
return -1;
} else {
continue;
}
}
};
nums = [1, 7, 3, 6, 5, 6];
console.log(pivotIndex(nums));

由于使用了嵌套的 for 循环,所以时间复杂度为 O(n²)。

阅读全文 »


  1. 作用域与作用域链

    • 作用域

      • 理解
        • 代码段所在的区域
        • 它是静态的(相对于上下文对象),在编写代码时就确定了
      • 分类
        • 全局作用域
        • 函数作用域
        • 块作用域
      • 作用
        • 隔离变量,不同作用域下同名变量不会有冲突
    • 作用域与执行上下文

      • 区别 1
        • 全局作用域外,每个函数都会创建自己的作用域,作用域在函数定义时就已经确定了,而不是在调用时确定
        • 全局执行上下文环境是在全局作用域确定后,js 代码马上执行之前创建
        • 函数执行上下文环境是在调用函数时,函数体代码执行之前创建
      • 区别 2
        • 作用域是静态的,只要函数定义好了就一直存在,且不会变化
        • 上下文环境是动态的,调用函数时创建,函数调用结束时上下文环境就自动释放
      • 联系
        • 执行上下文环境(对象)是从属于所在的作用域
        • 全局上下文环境 ==> 全局作用域
        • 函数上下文环境 ==> 对应的函数使用域
    • 作用域链

阅读全文 »
0%