- 顺序查找 (无序和有序均可)
```javascript
function search(arr, target) {
for (let i = 0; i < arr.length; i++) {
if (arr[i] === target) {
} } return -1; }return i
let arr = [1,2,3,4,5,6] console.log(search(arr, 10)) console.log(search(arr, 3))
2. 二分查找(有序)```javascriptfunction binarySearch(arr, target) {if (arr.length < 0) return -1;let start = 0;let end = arr.length - 1;while(start < end) {let mid = Math.floor((start + end) / 2)if (arr[mid] === target) {return mid;} else if (arr[mid] < target) {start = mid + 1;} else {end = mid - 1;}}}let arr = [1,2,3,4,5,6]console.log(search(arr, 10))console.log(search(arr, 3))
面试题
整数翻转。
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
/*123321-123-32112021*/// 解法1, 变成字符串处理function reverse(n) {let str = n.toString()let res = '';for (let i = str.length -1; i > -1; i--) {if (str[i] === '-') {res = str[i] + res;} else if (str[i] !== '0') {res += str[i]}}return parseInt(res);}// 解法2,function reverse(n) {let max = Math.pow(2, 31) - 1let min = -Math.pow(2, 31)let mid = `${n}`let result = ''let len = mid.length - 1for (let i = len; i > 0; i--) {result += mid[i]}if (mid[0] === '-') {result = mid[0] + result} else {result = result + mid[0]}// 转换成数字result = +result// 判断是否越界if (result > max || result < min) {return 0}return result}
