算法刷题
大厂面试还是很注重算法题的,尤其是字节跳动,算法是问的比较多的,关于算法,推荐《LeetCode》和《算法的乐趣》,这两本我也有电子版,字节跳动、阿里、美团等大厂面试题(含答案+解析)、学习笔记、Xmind思维导图均可以分享给大家学习。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
写在最后
最后,对所以做Java的朋友提几点建议,也是我的个人心得:
-
疯狂编程
-
学习效果可视化
-
写博客
-
阅读优秀代码
-
心态调整
用js写算法题
var arr = [];
function toLocaleString(num) {
if (num === null) return;
//转成字符串
var nums = num.toString();
//处理字符串
process(nums);
}
function process(nums) {
if (nums.length <= 3) {
arr[arr.length] = nums;
} else {
//切割最后三个字符
arr[arr.length] = nums.slice(-3);
//留下前面
nums = nums.slice(0, nums.length - 3);
//递归
process(nums);
}
}
toLocaleString(123456789);
//反转 并 转成字符串
console.log(arr.reverse().join(','));
function getMaxLength(str) {
//最终长度
var result = 0;
//存储目前最大字串
var noRepeatStr = '';
for (var i = 0; i < str.length; i++) {
var c = str.charAt(i);
var index = noRepeatStr.indexOf(c);
if (index == -1) { //还没出现过的字符
noRepeatStr = noRepeatStr + c;
result = result < noRepeatStr.length ? noRepeatStr.length : result;
} else {
//肯定是第一个重复 取剩下的 + c
noRepeatStr = noRepeatStr.substr(1) + c;
}
}
return result;
}
console.log(getMaxLength("abcdefg"));
function sum(a, b) {
var min = Math.min(a.length, b.length);
var max = Math.max(a.length, b.length);
var length = max - min;
//字符串前面补0
for (var i = 0; i < length; i++) {
if (a.length > b.length) {
b = '0' + b;
} else {
a = '0' + a;
}
}
//转成数组并反转 (注意还是字符数组)
a = a.split('').reverse();
b = b.split('').reverse();
//初始化结果数组
var res = new Array(max);
for (var i = 0; i < max; i++) {
res[i] = 0;
}
//a、b相加
for (var i = 0; i < max; i++) {
var temp = parseInt(a[i]) + parseInt(b[i]) + parseInt(res[i]);
if (temp > 9) {
res[i] = temp - 10;
res[i + 1] = 1;
} else {
res[i] = temp;
}
}
//反转数组并转回字符串
return res.reverse().join('');
}
console.log(sum('47393245', '678794')); //48072039
function combine(arr) {
//对前两个子数组相乘
var arr1 = arr[0];
var arr2 = arr[1];
var length1 = arr1.length;
var length2 = arr2.length;
var newArr = new Array(length1 \* length2);
var index = 0;
for (var i = 0; i < length1; i++) {
for (var j = 0; j < length2; j++) {
newArr[index] = arr[0][i] + "," + arr[1][j];
index++;
}
}
//更新
var Arr = new Array(arr.length - 1);
Arr[0] = newArr;
for (var i = 2; i < arr.length; i++) {
Arr[i - 1] = arr[i];
}
//递归中止条件
if (Arr.length == 1) {
return Arr[0];
} else {
return combine(Arr);
}
}
var arr = [['A1', 'B1', 'C1'], ['A2', 'B2', 'C2'], ['a3', 'b3']];
var res = combine(arr);
console.log(res);
function decidePrice() {
var n = 5;
var m = 6;
var want = [1, 2, 3, 4, 5, 6];
//记录价格
var price = 0;
//记录收益
var q = 0;
//对want数组进行升序排序
want = want.sort(function (a, b) {
return a - b;
});
//当供不应求时,不考虑出价较低者
if (n < m) {
want = want.slice(m - n);
}
//遍历算出最大q
for (var i = 0; i < want.length; i++) {
if (q < want[i] \* (want.length - i)) {
q = want[i] \* (want.length - i);
price = want[i];
}
}
return price;
}
console.log(decidePrice());
var s = "aaasdaddddddaf";
//存储最大长度
### 结尾
学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。
**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)**
![html5](https://img-blog.csdnimg.cn/img_convert/d35c2cf2d5364b4907e65f1856c923a4.png)