Leetcode Top 100 Liked Questions(序号75~104)

news2025/1/18 16:56:28

75. Sort Colors

 题意:红白蓝的颜色排序,使得相同的颜色放在一起,不要用排序

我的思路

哈希

代码 Runtime 4 ms Beats 28.23% Memory 8.3 MB Beats 9.95%

class Solution {
public:
    void sortColors(vector<int>& nums) {
        vector<int> ans; int n=nums.size();int vis[3]={0};
        for(int i=0;i<n;i++) vis[nums[i]]++;
        int v=0;
        for(int i=0;i<3;i++){
            for(int j=0;j<vis[i];j++){
                nums[v++]=i;
            }
        }
    }
};

标答

Dutch National Flag Problem荷兰国旗问题;

代码 计数排序 Runtime 0 ms Beats 100% Memory 8.3 MB Beats 41.44%

感觉和我之前做的差不多

class Solution {
public:
    void sortColors(vector<int>& nums) {
        int num0 = 0;
        int num1 = 0;
        int num2 = 0;
        for (int num:nums) {
            if( num==0 ) num0++;
            else if (num == 1)  num1++; 
            else if (num == 2)  num2++; 
        }
        for (int i=0; i< nums.size(); i++) {
            if( num0>0 ) {
                nums[i] = 0; num0--;
            } 
            else if( num1>0 ) {
                nums[i] = 1;  num1--;
            } 
            else if( num2>0 ) {
                nums[i] = 2; num2--;
            }
        }
    }
};

代码 双指针 Runtime 0 ms Beats 100% Memory 8.3 MB Beats 41.44%

如果nums[mid]是0,low和mid交换,因为low负责0的部分,low++保证指针前面的都是0,low指针指到的就只有0或者1;如果nums[mid]是1,那么是正确的;如果nums[mid]是2,high指向的和mid指向的交换,high--来确保high的右边都是2,为什么mid不++?因为mid这时可能是0,所以需要循环一次在判断

class Solution {
public:
    void sortColors(vector<int>& nums) {
        int low = 0, mid = 0, high = nums.size()-1;
        while(mid <= high){
            if(nums[mid] == 0){
                swap(nums[low], nums[mid]); low++; mid++;
            }
            else if(nums[mid] == 1) mid++;
            else{
                swap(nums[mid], nums[high]);  high--;
            }
        }
    }
};

76. Minimum Window Substring

题意:给出两个字符串s和t,找到minimum window substring

我的思路

不会

标答

用滑动窗口,窗口的开头在s字符串的初始位置,结尾在所有t的字符都在里面;当上面的窗口有了,就可以改变头指针来缩小窗口,步骤为:

1. 如果s比t小,那么直接返回;2. 记录t中的字母数量

3. 初始化;4. 尾指针遍历s

5. 一边遍历的时候一遍计算t中的字母数量;6. 如果数量剪完了,说明窗口形成了,现在要通过移动头指针实现窗口缩小了

7. 记录下最小的窗口长度和起始位置;8. 返回答案

注意:如何在头指针移动中判断当前节点是或否是t中的?在每个end指针移动的时候会把mp中的字母--,这时候就只有在t中的字母是大于等于0的了

代码 Runtime 7 ms Beats 92.29% Memory7.9 MB Beats 79.63%

class Solution {
public:
    string minWindow(string s, string t) {
        if(t.size()>s.size())return "";
        unordered_map<char,int>mp;
        for(int i=0;i<t.size();i++)mp[t[i]]++;
        int st=0,en=0,minli=99999,minst=0,coun=0;
        //st是头指针,en是尾指针,minli是最短的字符串长度,minst是头指针位置,coun是t字符个数
        for(;en<s.size();en++){
            if(mp[s[en]]>0) coun++;//属于字符串t的字母数量
            mp[s[en]]--;//无论它是不是字符串t中的字符,都要减减,这样子剪完就说明t字符都没了
            //变成负数就说明它减多了
            if(coun==t.size()){//字符串数量已经over了
                for(;st<en && (mp[s[st]]<0);){//注意这里是小于0,如果是大于0就说明减多了
                    mp[s[st]]++;st++;//先加加,恢复mp原来的个数,之后st前进
                }
                if(en-st<minli){//看看头指针改变过后,最小字符串长度是否更新了
                    minst=st;minli=en-st;
                }
                mp[s[st]]++;st++;//更新头指针,使得目前的字符串不合法
                coun--;//这时coun--,让尾指针可以接着更新
            }
        }
        string ans="";
        if (minli!=99999)
            ans= s.substr(minst,minli+1);
        return ans;
    }
};

78. Subsets

题意:给出一个数字集,输出所有的子集(包括空集)

我的思路

用递归?就像之前一样;有想过要不要用循环,但是发现用循环的话答案不对,就把循环消去了

代码 Runtime 0 ms Beats 100% Memory 7 MB Beats 78.17%

class Solution {
public:
    void sol(vector<int>& nums,int nxt,vector<int>& pol,vector<vector<int>> &ans){
        if(nxt==nums.size()){
            ans.push_back(pol);
            return ;
        }
        pol.push_back(nums[nxt]);//因为拿或者不拿
        sol(nums,nxt+1,pol,ans);
        pol.pop_back();
        sol(nums,nxt+1,pol,ans);
    }
    vector<vector<int>> subsets(vector<int>& nums) {
        vector<vector<int>> ans={};    vector<int> pol={};
        sol(nums,0,pol,ans);
        return ans;
    }
};

79. Word Search

题意:

我的思路

把所有可能性的都遍历一遍,如果是BFS的话,先把起点找到,之后环顾四周看看有没有(?

首先要准备一个队列,把(位置,第几个英文字母)找到的都放到队列里,之后bfs上下左右的看,如果在周围找不到下一个就return false,但是做到最后 超时了TLE

代码 超时代码

class Solution {
public:
    struct node{
        int x,y,id;
        vector<vector<bool> > vis=vector(6 , vector<bool>(6,0));
    };
    bool exist(vector<vector<char>>& board, string word) {
        queue<node>st,q;
        int n=board.size(),m=board[0].size();
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(board[i][j]==word[0]){
                    node temp;temp.x=i;temp.y=j;temp.id=0;temp.vis[i][j]=1;
                    st.push(temp);
                }
            }
        }
        int dx[]={1,-1,0,0};
        int dy[]={0,0,1,-1};
        while(!st.empty()){
            while(!q.empty())q.pop();//清空
            node te=st.front();
            st.pop();q.push(te);
            while(!q.empty()){
                node now=q.front(); 
                int nx,ny;
                if(now.id==word.size()-1)return 1;
                q.pop();
                for(int i=0;i<4;i++){
                    nx=now.x+dx[i];ny=now.y+dy[i];
                    if(nx>=0&&nx<n&&ny>=0&&ny<m&&!now.vis[nx][ny]){
                        if(board[nx][ny]==word[now.id+1]){
                            node ans;ans.x=nx;ans.y=ny;
                            ans.id=now.id+1;ans.vis=now.vis;
                            ans.vis[nx][ny]=1;
                            q.push(ans);
                        }
                    }
                }
            }
        }
        return 0;
    }
};

标答

首先得到n和m,遍历地图,如果地图是第一个字符,那么就可以开始递归了

代码 Runtime 774 ms Beats 47.25% Memory 7.9 MB Beats 74.74%

在递归条件中先判断是不是这个字母,然后递归下去

class Solution {
public:
    bool solve(vector<vector<char>>& board,int x,int y,int c,int m,int n,string word){
        if(c==word.size())return 1;
        if(x<0||y<0||x>=m||y>=n)return 0;
        if(board[x][y]!=word[c])return 0;
        char ch=board[x][y];
        board[x][y]='#';//这一手就不会来回走了!
        if(solve(board,x+1,y,c+1,m,n,word)||
            solve(board,x,y+1,c+1,m,n,word)||
            solve(board,x-1,y,c+1,m,n,word)||
            solve(board,x,y-1,c+1,m,n,word))return 1;
        board[x][y]=ch;
        return 0;
    }
    bool exist(vector<vector<char>>& board, string word) {
        int m=board.size(), n=board[0].size();
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                 if(solve(board,i,j,0,m,n,word))
                    return 1;
            }
        }
        return 0;
    }
};

优化代码 Runtime 0 ms Beats 100% Memory8.1 MB Beats 42.63%

优化途径

1. 不要把递归放在判断if里面,这样会费时

2. 先把字符串倒过来,如果最后一个字符的数量大于第一个字符的数量,再把字符串倒转回去;也就是先把字符数量少的先递归【但是我不知道为什么】

class Solution {
public:
    bool ispres(vector<vector<char>>& board, int i, int j, 
                                const string &word,int c,int m, int n){
        if(c==word.length()){
            return true;
        }
        if(i < 0 || j < 0 || i >= m || j >= n || board[i][j]!=word[c]){
            return false;
        }
        char ch = board[i][j];
        board[i][j] = '*';
        bool flag = ispres(board,i+1,j,word,c+1,m,n) || 
                    ispres(board,i-1,j,word,c+1,m,n) || 
                    ispres(board,i,j+1,word,c+1,m,n) || 
                    ispres(board,i,j-1,word,c+1,m,n);
        board[i][j] = ch;
        return flag;
    }
    bool exist(vector<vector<char>>& board, string word) {
        int m = board.size();
        int n = board[0].size();
        reverse(word.begin(), word.end());
        if (count(word.begin(), word.end(), word[0]) > 
                             count(word.begin(), word.end(), word[word.size() - 1])) 
            reverse(word.begin(), word.end());
        for(int i = 0; i < m; i++){
            for(int j = 0; j < n; j++){
                if(board[i][j]==word[0]){
                    if(ispres(board,i,j,word,0,m,n)){
                        return true;
                    }
                }
            }
        }
        return false;
    }
};

84. Largest Rectangle in Histogram

 题意:

我的思路

如果是双指针的话,min(a[i],…,a[j])*(j-i+1)

那就首先是On^2的时间复杂度,但是预处理的话二维数组会爆栈

不会做

标答

代码 单调栈 Runtime 125 ms Beats 88.36% Memory77.3 MB Beats 73.1%

st里面从小到大的放置,相等的留下,ran是最近的比当前的要大的高度,height的数组最后加上0。求面积是弹出的最大值*(当前的位置减去栈中目前的位置-1)

为什么是当前的位置减去栈中目前的位置-1?

因为设这一轮被弹出的位置为x,高位h[x],弹出后的栈顶位置为y,因为h[y]小于等于h[x],也就是说,(y,x]的位置之间的高都是大于h[x];

【不然为什么(y,x]的位置之间的高要被弹出去呢】

同时(x,i)的位置之间的高也都是大于h[x]

【不然x就被弹出去了】

所以(y,i)之间,x是最小的;因此面积是h[ x ] * ( i - y - 1 )

注意:初始化ran,初始化h数组

为什么栈一开始不把-1放入?【就像32. Trapping Rain WaterLeetCode Top100 Liked 题单(序号19~33)】

因为32是栈,而这个是单调栈,需要比较站内的元素来决定是否弹出

相关:42. Trapping Rain WaterLeetCode Top100 Liked 

class Solution {
public:
    int largestRectangleArea(vector<int>& h) {
        stack<int> st;int ans=0;
        h.push_back(0); int n=h.size();
        for(int i=0;i<n;i++){
            while(!st.empty()&&h[st.top()]>h[i]){//找到了高的
                int x=st.top(),y;st.pop();
                if(st.empty()) y=-1;
                else y=st.top();
                ans=max(ans,h[x]*(i-y-1));
            }
            st.push(i);
        }
        return ans;
    }
};

代码 Runtime 86 ms Beats 99.54% Memory74.7 MB Beats 99.53%

感觉和单调栈的原理差不多,但是没有看懂

class Solution {
public:
    int largestRectangleArea(const vector<int>& heights) {
			int end=-1;
			int n=heights.size();
			int maxArea=0;
            int counts[10001] = {};
            int sortedIndexes[10001] = {};
			for (int i=0;i<=n;++i) {
				int count = 1;
				while(true){
					if(end<0)break;
					const int index=sortedIndexes[end];
					if(i!=n&&heights[index]<heights[i])break;
					count+=counts[end];
					int area=(counts[end]+i-index-1)*heights[index];
					if(area>maxArea)maxArea=area;
					--end;
                }
				sortedIndexes[++end] = i;
				counts[end] = count;
			}
			return maxArea;
		}
};

94. Binary Tree Inorder Traversal

题意:输出二叉树中序排序

我的思路

就直接中序递归就可以了

注意:当root为空的时候要特判!!!

代码 Runtime0 ms Beats 100% Memory 8.2 MB Beats 97.70%

class Solution {
public:
    void p(TreeNode* root,vector<int>& ans){
        if(root->left !=NULL)
            p(root->left,ans);
        ans.push_back(root->val);
        if(root->right!=NULL)
            p(root->right,ans);
    }
    vector<int> inorderTraversal(TreeNode* root) {
        if(root==NULL)return {};
        vector<int> ans;
        p(root,ans);
        return ans;
    }
};

98. Validate Binary Search Tree

题意:判断树是不是平衡搜索树BST,左子树比中间的小,右子树比中间的大

我的思路

还是递归,就像前面的79 word search一样搜索,然后判断ans的顺序大小

注意:等于也不行!!!

注意:int&的时候不要传const int 进去

代码 Runtime13 ms Beats 42.85% Memory 21.7 MB Beats 33.33%

class Solution {
public:
    bool P(TreeNode* root,long long & r){
        if(root->left!=NULL){
           if(!P(root->left,r))
                return 0;
        }
        if(r>=root->val) return 0;
        r=root->val;
        if(root->right!=NULL){
           if(!P(root->right,r))
                return 0;
        }
        return 1;
    }
    bool isValidBST(TreeNode* root) {
        long long ans=-2147483649;
        return P(root,ans);
    }
};

标答

确实更加简洁快速

代码 Runtime4 ms Beats 94.78% Memory21.7 MB Beats 33.33%

class Solution {
public:
    bool isValidBST(TreeNode* root,long min,long max){
        if(root==NULL)
            return true;
        if(root->val>=max or root->val<=min)
            return false;
        return isValidBST(root->left,min,root->val)&&isValidBST(root->right,root->val,max);
    }
    bool isValidBST(TreeNode* root) {
        long max=LONG_MAX;
        long min=LONG_MIN;
        
        return isValidBST(root,min,max);
    }
};

101. Symmetric Tree

题意:看是不是对称的

我的思路

中序序列ans,两个指针从两端向中间核对

答案不正确,因为[1,2,2,2,null,2]也会判断成正确的,所以不可以

既然是递归,那就要让左子树的左子树 和 右子树的右子树对称;左子树的右子树 和 右子树的左子树对称

但是不会写

标答

递归函数的参数是左子树指针和右子树指针,然后判断左的值和右的值是否相同

然后判断左的左和右的右  左的右和右的左

这样递归下去

代码 Runtime 0 ms Beats 100% Memory 16.2 MB Beats 91.71%

class Solution {
public:
    bool p(TreeNode* l,TreeNode* r){
        if(l==NULL&&r==NULL)return 1;
        else if (l==NULL||r==NULL)return 0;
        if(l->val!=r->val)return 0;
        return p(l->left,r->right)&&p(l->right,r->left);//递归
    }
    bool isSymmetric(TreeNode* root) {
        if(root==NULL)return 1;
        return p(root->left,root->right);
    }
};

102. Binary Tree Level Order Traversal

题意:层序遍历

我的思路

一层的结尾放一个空指针,每次循环到空指针的时候,就在结尾放一个空指针;当循环弹出空指针同时队列为空的时候,就停止放入空指针

代码 Runtime 6 ms Beats 52.11% Memory13.3 MB Beats 92.55%

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        vector<vector<int>> ans;
        queue <TreeNode *>q;
        if(root==NULL)return ans;
        q.push(root);q.push(NULL);
        vector<int> sol;
        while(!q.empty()){
            TreeNode * top;top=q.front();q.pop();
            if(top!=NULL){
                sol.push_back(top->val);
                if(top->left!=NULL)q.push(top->left);
                if(top->right!=NULL)q.push(top->right);
            }
            else{
                ans.push_back(sol);sol={};
                if(!q.empty())q.push(NULL);
            }
        }
        return ans;
    }
};

标答

用一层的队列大小得出一层有多少个,来循环

代码 Runtime 3 ms Beats 88.93% Memory13.6 MB Beats 51.20%

class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        vector<vector<int>>ans; 
        if(root == NULL) return ans; 
        queue<TreeNode*>q;
        q.push(root);
        while(!q.empty()){
            int size =  q.size(); 
            vector<int> level; 
            for(int i =0;i<size;i++){
                TreeNode* node=q.front();q.pop();
                if(node->left!=NULL)q.push(node->left);
                if(node->right!=NULL)q.push(node->right);
                level.push_back(node->val);
            }
            ans.push_back(level);
        }
        return ans; 
    }
};

104. Maximum Depth of Binary Tree 

题意:求树的最大深度

我的思路

用层序遍历看看有几层或者用递归无线向下,那就先用层序遍历向下

代码 层序遍历 Runtime 0 ms Beats 100% Memory19 MB Beats 9.46%

class Solution {
public:
    int maxDepth(TreeNode* root) {
        queue<TreeNode*> q; 
        if(root==NULL)return 0;
        q.push(root);
        int deep=0;
        while(!q.empty()){
            deep++;int n=q.size();
            for(int i=0;i<n;i++){
                if(q.front()->left!=NULL)q.push(q.front()->left);
                if(q.front()->right!=NULL)q.push(q.front()->right);
                q.pop();
            }
        }
        return deep;
    }
};

标答 递归

树的高度=max(左子树的高度,右子树的高度)+1

代码 递归 Runtime 8 ms Beats 61.27% Memory19 MB Beats 9.46%

class Solution {
public:
    int maxDepth(TreeNode* root) {
        if(root==NULL)return 0;
        return max(maxDepth(root->left),maxDepth(root->right))+1;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/943887.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ping32客户端安装注册

登录Ping32&#xff0c;进入主界面 回到“开始”界面 在桌面会生成客户端安装程序

EOCR电机保护器MODBUS通讯的使用

在工厂自动化中&#xff0c; 数据连接是必不可少的&#xff0c; 尤其是在工业4.0概念不断扩大其覆盖范围的今天。而通过EOCR的MODBUS通讯&#xff0c;用户可将电动机的运行状态、运行电流、故障原因及时间等信息传输至上位机中&#xff0c;以方便用户实时监测电动机的状态&…

《Linux多线程服务端编程》读书笔记(一)

线程安全 一个线程安全的类应该满足下面三个条件 多个线程同时访问&#xff0c;其表现出正确的行为无论操作系统如何调度这些线程&#xff0c;无论这些线程的执行顺序如何交织调用端代码无需额外的同步或其他协调动作 对象的线程安全 对象构造要做到线程安全&#xff0c;唯…

弹幕引擎使用教学

欢迎阅读 弹幕引擎 / 弹幕会模板 使用教学&#xff01; 不知道您是否听说过“弹幕游戏”&#xff0c;Scratch 闯关游戏作品&#xff1a;东方虹魔馆 如果听说过&#xff0c;那就太好啦&#xff01;您很有可能已经对“弹幕”甚至“符卡”有了认识基础。没有也不要紧&#xff0c;您…

智能化新十年,“全栈智能”定义行业“Copilot智能助手”

“智能化转型是未来十年中国企业穿越经济周期的利器”&#xff0c;这是联想集团执行副总裁兼中国区总裁刘军在去年联想创新科技大会上做出的判断&#xff0c;而2023年正值第四次工业革命第二个十年的开端&#xff0c;智能化是第四次工业革命的主题。2023年初&#xff0c;基于谷…

红盟云卡系统v1.1.17虚拟商品在线售卖平台源码

红盟云卡系统是一款基于PHPMySQL开发的虚拟商品在线售卖平台 v1.1.17.20230627 增加强制登录插件 增加QQ微信防红插件 增加首页弹窗插件 增加鱼儿游背景特效插件 官方微信支付插件增加jsapi类型 后台订单列表增加下单必填项字段显示 修复分站个人中心开通分站报错的问题 修复提…

FAST协议详解3 可null(空)类型

一、概述 所谓可null、可空&#xff0c;其实是一个特性的两个方面&#xff0c;某些情况下&#xff0c;我们不需要传递某个字段的值&#xff0c;则可以将该字段“空”起来&#xff0c;不赋值&#xff0c;则接收方在收到该字段时会自动解析为null值。所以空是对于发送方而言&…

控制各种开环伺服阀放大器

控制不带电气位置反馈模块式伺服阀开环控制&#xff0c;最大电流10mA至1000mA范围可选&#xff1b; 常规可选电流档位&#xff1a;10mA、15mA、20mA、40mA、100mA、300mA等&#xff1b; 前面板电位器或者上位机精细调整零位及增益。 颤振频率以及颤振幅度可选。 快速电流驱…

初入职场六个注意

点击下方关注我&#xff0c;然后右上角点击...“设为星标”&#xff0c;就能第一时间收到更新推送啦~~~ 作为一个职场新人&#xff0c;最重要的变化是从学校的学习生活转变进入职场的工作生活&#xff0c;一切都是新鲜的&#xff0c;步入职场就是进入了社会。 其实学校也是一个…

高忆管理:成交量突然放大股价下跌?

在出资股票时&#xff0c;咱们常常看到股票价格急剧跌落&#xff0c;而此时成交量正在暴增。许多出资者进入股市的初期或许会产生困惑&#xff0c;将“成交量忽然扩大股价跌落”视为出资时的一般改变和常态&#xff0c;但其实并不总是如此。这种现象或许暗示着不同的问题和情况…

Qt:界面实时响应鼠标拖动绘制

采用双缓冲实现界面实时响应鼠标的拖动绘制。 思想如下&#xff1a;首先需要两张画布pix和tempPix&#xff0c;他们都是QPixmap实例&#xff1b;pix用来保存初始界面或上一阶段以完成的绘制&#xff1b;tempPix用来作为鼠标拖动时的实时界面绘制&#xff1b;当鼠标左键按下后拖…

C# 生成唯一ID

1.首先通过nuget安装yitter.idgenerator 下面的三行代码搞定

文心一言 VS 讯飞星火 VS chatgpt (83)-- 算法导论8.1 4题

四、用go语言&#xff0c;假设现有一个包含n个元素的待排序序列。该序列由 n/k 个子序列组成&#xff0c;每个子序列包含k个元素。一个给定子序列中的每个元素都小于其后继子序列中的所有元素&#xff0c;且大于其前驱子序列中的每个元素。因此&#xff0c;对于这个长度为 n 的…

C++ | 源码分析 Why double free?

源码分析 Why double free? 文章目录 源码分析 Why double free?WhatWhy1.浅拷贝 VS 深拷贝浅拷贝深拷贝 2.push_back 和 emplace_backpush_back 源码emplace_back 源码 Example HowReference>>>>> 欢迎关注公众号【三戒纪元】 <<<<< What 前…

【爬虫小知识】如何利用爬虫爬网页——python爬虫

前言 网络时代的到来&#xff0c;给我们提供了海量的信息资源&#xff0c;但是&#xff0c;想要获取这些信息&#xff0c;手动一个一个网页进行查找&#xff0c;无疑是一项繁琐且效率低下的工作。这时&#xff0c;爬虫技术的出现&#xff0c;为我们提供了一种高效的方式去获取…

el-form的表单验证,有值却报红!

正确的写法是 el-form中的form用 :model绑定&#xff0c;各个输入项用 v-model绑定值 原因 显然&#xff0c;区别就是 v-model 和 :model的区别 V-mode v-model是一个语法糖&#xff0c;用于 “表单元素上” 实现双向数据绑定。包括数据绑定和事件监听。 <input v-model&q…

Docker技术--Docker简介和架构

1.Docker简介 (1).引入 我们之前学习了EXSI,对于虚拟化技术有所了解,但是我们发现类似于EXSI这样比较传统的虚拟化技术是存在着一定的缺陷:所占用的资源比较多,简单的说,就是你需要给每一个用户提供一个操作平台,这一个操作平台就会占用你的资源。这样资源的浪费是比较多的…

Ansys Zemax | 大功率激光系统的 STOP 分析(五)

大功率激光器广泛用于各种领域当中&#xff0c;例如激光切割、焊接、钻孔等应用中。由于镜头材料的体吸收或表面膜层带来的吸收效应&#xff0c;将导致在光学系统中由于激光能量吸收所产生的影响也显而易见&#xff0c;大功率激光器系统带来的激光能量加热会降低此类光学系统的…

问道管理:逾4600股飘红!汽车板块爆了,多股冲击涨停!

A股商场今天上午全体低开&#xff0c;但其后逐级上行&#xff0c;创业板指数上午收盘大涨超越3%&#xff0c;北向资金也完成净买入38亿元。 别的&#xff0c;A股商场半年报成绩发表如火如荼进行中&#xff0c;多家公司发表半年报后股价应声大涨&#xff0c;部分公司股价冲击涨停…

Docker从认识到实践再到底层原理(一)|技术架构

前言 那么这里博主先安利一些干货满满的专栏了&#xff01; 首先是博主的高质量博客的汇总&#xff0c;这个专栏里面的博客&#xff0c;都是博主最最用心写的一部分&#xff0c;干货满满&#xff0c;希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏…