2024年Web前端最全剑指Offer——知识点储备-常用算法_算法杠知识储备,成功入职字节跳动

文章介绍了大厂面试对算法的重视,推荐了学习资源如《LeetCode》和《算法的乐趣》,并分享了前端面试题解析、学习笔记等内容,同时强调了掌握HTML5、CSS、JavaScript基础知识和高级书籍如《高级程序设计》的重要性。
摘要由CSDN通过智能技术生成
算法刷题

大厂面试还是很注重算法题的,尤其是字节跳动,算法是问的比较多的,关于算法,推荐《LeetCode》和《算法的乐趣》,这两本我也有电子版,字节跳动、阿里、美团等大厂面试题(含答案+解析)、学习笔记、Xmind思维导图均可以分享给大家学习。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

写在最后

最后,对所以做Java的朋友提几点建议,也是我的个人心得:

  1. 疯狂编程

  2. 学习效果可视化

  3. 写博客

  4. 阅读优秀代码

  5. 心态调整

    	fun(set,str.toCharArray(),0);
    	re.addAll(set);//将出现的字符串保存在list集合中
    	Collections.sort(re);
    	return re;
    	
    }
    

    static void fun(HashSet re,char[] str, int k){
    if(k==str.length){
    re.add(new String(str));
    return;
    }
    for(int i=k;i<str.length;i++){//在for循环中,第一次初始化,然后判断,执行for循环体。执行完后i+1,在判断(初始化只执行一次)
    swap(str,i,k);
    fun(re,str,k+1);
    swap(str,i,k);//防止元素的重复,进行复原
    }
    }
    //将数组中的两个数进行交换
    static void swap(char[] str,int i,int j){
    if(i!=j){//相同就不用交换了
    char t=str[i];
    str[i]=str[j];
    str[j]=t;
    }
    }
    }


### 二进制数中1的个数(用与运算)



static int NumberOf3(int n) {
int count=0;
while(n!=0){//整数不为0,必有1
++count;
n=n&(n-1);

	}
	return count;
}

### 反转二叉树(就是二叉树的镜像)



public void Mirror(TreeNode root) {
if(rootnull) {//为空结点
return;
}
if(root.left
null&&root.right==null){//表明该结点是叶子节点或只是根为的节点
return;
}
//交换当前节点的左右子树
TreeNode temp;
temp=root.left;
root.left=root.right;
root.right=temp;
if(root.left!=null){
Mirror(root.left);
}
if(root.right!=null){
Mirror(root.right);
}
}


### 通过前序、中序,重建二叉树



/**
* 解题的步骤:
* 1:递归的结束条件,只有到叶子节点,递归才结束(preStartpreEnd&&inStartinEnd)
* 2:在中序中找到根,通过根算出左子树的长度,右子树的长度(左右子树各有多少个节点)
* 3:通过左子树的长度,算出前序左子树的起始节点(preStart+1,preStart+leftTree),中序左子树的起始节点(inStart,root-1),递归前提条件是leftLength>0(若为0,那就是叶子节点了)
* 4:同上算出右子树的递归
*/
public TreeNode reConstructBinaryTree(int [] pre,int [] in) {
if(prenull||innull){//只要一个为空,另一个必为
return null;
}
TreeNode root=binaryTree(pre,in,0,pre.length-1,0,in.length-1);
return root;
}
public TreeNode binaryTree(int[] pre,int[] in,int preStart,int preEnd,int inStart,int inEnd){
//构造一个结点
TreeNode node=new TreeNode(pre[preStart]);
node.left=null;
node.right=null;
//现在要想想递归的结束条件是什么,preStart=preEnd和inStart=inEnd,表明这是一个叶子节点
if(preStartpreEnd&&inStartinEnd){
return node;
}
//现在要找出根节点
int root=0;
//肯定在in数组中找了
for(int i=inStart;i<in.length;i++){
if(pre[preStart]==in[i]){
root=i;
break;
}
}
//找到根节点,就得算出左右子树的长度(肯定是通过in数组)
int leftTree=root-inStart;//要去掉根节点即第一个节点
int rightTree=inEnd-root;
if(leftTree>0){
node.left=binaryTree(pre,in,preStart+1,preStart+leftTree,inStart,root-1);
}
if(rightTree>0){
node.right=binaryTree(pre, in, preStart+leftTree+1, preEnd, root+1, inEnd);
}

	return node;
}

}


### 结尾

学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

**[开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】](https://bbs.csdn.net/topics/618166371)**

高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。

![html5](https://img-blog.csdnimg.cn/img_convert/d35c2cf2d5364b4907e65f1856c923a4.png)







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值