《LeetCode热题100》笔记题解思路技巧优化_Part_1

《LeetCode热题100》笔记&题解&思路&技巧&优化_Part_1

  • 😍😍😍 相知
  • 🙌🙌🙌 相识
  • 😢😢😢 开始刷题
    • 哈希
      • 🟢1. 两数之和
      • 🟡2. 字母异位词分组
      • 🟡3. 最长连续序列
    • 双指针
      • 🟢4. 移动零
      • 🟡5. 盛最多水的容器
      • 🟡6. 三数之和
      • 🔴7. 接雨水(滞留)
    • 滑动窗口
      • 🟡8. 无重复字符的最长子串(滞留)
      • 🟡9. 找到字符串中所有字母异位词(滞留)
    • 子串
      • 🟡10. 和为K的子数组(滞留)
      • 🔴11. 滑动窗口最大值(滞留)
      • 🔴12. 最小覆盖子串(滞留)

在这里插入图片描述

😍😍😍 相知

刷题不要一上来就直接干,先看题,明白题说的什么意思,然后想一下用什么现成的算法和数据结构可以快速解决,如果还是无从下手,建议先去看视频,不要直接翻评论或官方代码实现,看完视频,自己在idea中模拟敲几遍代码,如果跑通了,先别急着上leetcode黏贴,而是再回顾一下要点,然后确定自己完全懂了后,在leetcode中手敲,注意是手敲下来!!! 目前我就是采用的这种方法,虽然慢,但是可以维持一周忘不掉它,如果要想长期不忘,只能隔段时间就review一下了,就算是大牛,知道方法,长时间不碰,也不可能保证一次到位把代码敲完一遍过!!!

🙌🙌🙌 相识

刷LeetCode热题100的想法有几个原因:

  1. 流行度高:LeetCode是一个广受欢迎的在线刷题平台,拥有大量用户和活跃的讨论社区。因此,热门题目通常代表了大多数人认为重要的题目或者面试中常见的题目。

  2. 面试备战:LeetCode上的题目往往和面试题目有很大的重合度。刷LeetCode热题100可以帮助你熟悉常见的面试题型和解题思路,提高应对面试的能力。

  3. 广泛的覆盖:热题100覆盖了各种难度级别的题目,包括简单、中等和困难。通过解答这些题目,可以提高自己的算法和编程能力,并扩展自己的知识面。

  4. 反馈和讨论:由于热题100是根据用户的反馈和讨论度排名的,因此这些题目往往有大量的解题思路和讨论可以参考。你可以从其他人的解题过程中学习到很多知识和技巧。

😢😢😢 开始刷题

哈希

🟢1. 两数之和

题目跳转:https://leetcode.cn/problems/two-sum/?envType=study-plan-v2&envId=top-100-liked

哈希经典!第一题!!你要知道他的重要性!!

这里用了一个技巧,就是存哈希Key的时候存的是target - nums[i],这样,我们找的时候 就可以直接找Key, 当然你直接存nums[i] ,hashmap.containsKey的时候 找target - nums[i]就行。

在这里插入图片描述

class Solution {
    public int[] twoSum(int[] nums, int target) {
        HashMap<Integer,Integer> hashmap = new HashMap<>();
        for(int i = 0;i<nums.length;i++){
            if(hashmap.containsKey(nums[i])){
                return new int [] {hashmap.get(nums[i]),i};
            }
            else
            {
                hashmap.put(target - nums[i],i);
            }
        }
        return new int [] {0,0};
    }
}

🟡2. 字母异位词分组

题目跳转:https://leetcode.cn/problems/group-anagrams/description/?envType=study-plan-v2&envId=top-100-liked

在这里插入图片描述

class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        List<List<String>> l_list = new ArrayList<>();
        Map<String,List<String>> map = new HashMap<>();
        for(int i = 0;i<strs.length;i++)
        {
            char[] temp_char = strs[i].toCharArray();
            Arrays.sort(temp_char);
            String str_temp = new String(temp_char);

            if(map.containsKey(str_temp))
            {
                map.get(str_temp).add(strs[i]);
            }
            else
            {
                List<String> list = new ArrayList<>();
                list.add(strs[i]);
                map.put(str_temp,list);
            }
        }
        Set<String> keys = map.keySet();
        for(String k:keys)
        {
            l_list.add( map.get(k));
        }
        return l_list;
    }
}

🟡3. 最长连续序列

题目跳转:https://leetcode.cn/problems/longest-consecutive-sequence/?envType=study-plan-v2&envId=top-100-liked

首先去重加上可以find到 具体值 一直探究到 一个最长连续序列的最小值,也就是没有比这个最小值还要小的值了,任何再网上进行遍历,一直累加到没有本身+1的值 记录当前穿的长度。

在这里插入图片描述

class Solution {
    public int longestConsecutive(int[] nums) {
        Set<Integer> num_set = new HashSet<Integer>();
        for (int num : nums) {
            num_set.add(num);
        }

        int res = 0;

        for (int num : num_set) {
            // num 是一串连续数字的第一个
            if (!num_set.contains(num - 1)) {
                int curNum = num;
                int cnt = 1;

                while(num_set.contains(curNum + 1)) {
                    curNum++;
                    cnt++;
                }

                res = Math.max(cnt, res);
            }
        }
        return res;
    }
}

双指针

🟢4. 移动零

题目跳转:https://leetcode.cn/problems/move-zeroes/description/?envType=study-plan-v2&envId=top-100-liked

在这里插入图片描述

在这里插入图片描述

class Solution {
    public void moveZeroes(int[] nums) {
        if(nums.length==0)return;
        int slow = 0;
        for(int fast = 0;fast < nums.length;fast++){
            if(nums[fast]==0) continue;
            else{
                nums[slow] = nums[fast];
                slow++;
            }
        } 
        while(slow<nums.length){
            nums[slow++] = 0;
        }

    }
}

🟡5. 盛最多水的容器

题目跳转:https://leetcode.cn/problems/container-with-most-water/?envType=study-plan-v2&envId=top-100-liked

在这里插入图片描述
分析

我们先从题目中的示例开始,一步一步地解释双指针算法的过程。稍后再给出算法正确性的证明。

题目中的示例为:

[1, 8, 6, 2, 5, 4, 8, 3, 7]
 ^                       ^

在初始时,左右指针分别指向数组的左右两端,它们可以容纳的水量为 min ⁡ ( 1 , 7 ) ∗ 8 = 8 \min(1, 7) * 8 = 8 min(1,7)8=8

此时我们需要移动一个指针。移动哪一个呢?直觉告诉我们,应该移动对应数字较小的那个指针(即此时的左指针)。这是因为,由于容纳的水量是由

两个指针指向的数字中较小值∗指针之间的距离

决定的。如果我们移动数字较大的那个指针,那么前者「两个指针指向的数字中较小值」不会增加,后者「指针之间的距离」会减小,那么这个乘积会减小。因此,我们移动数字较大的那个指针是不合理的。因此,我们移动 数字较小的那个指针。

有读者可能会产生疑问:我们可不可以同时移动两个指针? 先别急,我们先假设 总是移动数字较小的那个指针 的思路是正确的,在走完流程之后,我们再去进行证明。

所以,我们将左指针向右移动:

[1, 8, 6, 2, 5, 4, 8, 3, 7]
    ^                    ^

此时可以容纳的水量为 min ⁡ ( 8 , 7 ) ∗ 7 = 49 \min(8, 7) * 7 = 49 min(8,7)7=49。由于右指针对应的数字较小,我们移动右指针:

[1, 8, 6, 2, 5, 4, 8, 3, 7]
    ^                 ^

此时可以容纳的水量为 min ⁡ ( 8 , 3 ) ∗ 6 = 18 \min(8, 3) * 6 = 18 min(8,3)6=18。由于右指针对应的数字较小,我们移动右指针:

[1, 8, 6, 2, 5, 4, 8, 3, 7]
    ^              ^

此时可以容纳的水量为 min ⁡ ( 8 , 8 ) ∗ 5 = 40 \min(8, 8) * 5 = 40 min(8,8)5=40。两指针对应的数字相同,我们可以任意移动一个,例如左指针:

[1, 8, 6, 2, 5, 4, 8, 3, 7]
       ^           ^

此时可以容纳的水量为 min ⁡ ( 6 , 8 ) ∗ 4 = 24 \min(6, 8) * 4 = 24 min(6,8)4=24。由于左指针对应的数字较小,我们移动左指针,并且可以发现,在这之后左指针对应的数字总是较小,因此我们会一直移动左指针,直到两个指针重合。在这期间,对应的可以容纳的水量为: min ⁡ ( 2 , 8 ) ∗ 3 = 6 \min(2, 8) * 3 = 6 min(2,8)3=6 min ⁡ ( 5 , 8 ) ∗ 2 = 10 \min(5, 8) * 2 = 10 min(5,8)2=10 min ⁡ ( 4 , 8 ) ∗ 1 = 4 \min(4, 8) * 1 = 4 min(4,8)1=4

在我们移动指针的过程中,计算到的最多可以容纳的数量为 49,即为最终的答案。

class Solution {
    public int maxArea(int[] height) {
        if(height.length<=1)return 0;
        int left = 0;
        int right = height.length-1;
        int w = 0;
        int h = 0;
        int max = 0;
        while(left<right){
            w = right - left;
            h = Math.min(height[left],height[right]);
            max = Math.max(max,h*w);
            while(height[left]<=h&&left<right)left++;
            while(height[right]<=h&&left<right)right--;
        }
        return max;
        
    }
}

🟡6. 三数之和

题目跳转:https://leetcode.cn/problems/3sum/?envType=study-plan-v2&envId=top-100-liked

在这里插入图片描述

拿这个nums数组来举例,首先将数组排序,然后有一层for循环,i从下标0的地方开始,同时定一个下标left 定义在i+1的位置上,定义下标right 在数组结尾的位置上。

依然还是在数组中找到 abc 使得a + b +c =0,我们这里相当于 a = nums[i],b = nums[left],c = nums[right]。

接下来如何移动left 和right呢, 如果
n u m s [ i ] + n u m s [ l e f t ] + n u m s [ r i g h t ] > 0 nums[i] + nums[left] + nums[right] > 0 nums[i]+nums[left]+nums[right]>0

就说明 此时三数之和大了,因为数组是排序后了,所以right下标就应该向左移动,这样才能让三数之和小一些。

如果 n u m s [ i ] + n u m s [ l e f t ] + n u m s [ r i g h t ] < 0 nums[i] + nums[left] + nums[right] < 0 nums[i]+nums[left]+nums[right]<0说明 此时 三数之和小了,left 就向右移动,才能让三数之和大一些,直到left与right相遇为止。

时间复杂度: O ( n 2 ) O(n^2) O(n2)

class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        Arrays.sort(nums);
        int left = 0;
        int right = nums.length-1;
        List<List<Integer>> result = new ArrayList<>();
        while(left+1<right){
            for(int i = left+1;i<right;i++){
                if(nums[i]+nums[left]+nums[right]==0){
                    List<Integer> templist = new ArrayList<>();
                    templist.add(nums[left]);
                    templist.add(nums[i]);
                    templist.add(nums[right]);
                    result.add(templist);
                    right--;
                     while(right>left+1&&nums[right+1]==nums[right])
                     {
                         right--;
                     }
                    
                }
                else if(nums[left]+nums[i]+nums[right]>0)
                {
                    right--;
                    i--;
                }
                else{
                    continue;
                }

            }
            right= nums.length-1;
            left++;
            while(right>left+1&&nums[left-1]==nums[left])
            {
                left++;
            }
            
        }
        return result;
    }
}

🔴7. 接雨水(滞留)

题目跳转:https://leetcode.cn/problems/trapping-rain-water/description/?envType=study-plan-v2&envId=top-100-liked

在这里插入图片描述

我真的服了 学点忘点。。。。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

class Solution {
    public int trap(int[] height) {
        if(height.length<=2)return 0;
        int sum = 0;
        Stack<Integer> stack = new Stack<>();
        stack.push(0);
        for(int i = 1;i<height.length;i++){
            if(!stack.isEmpty()&&height[stack.peek()]>=height[i]){
                stack.push(i);
            }
            else{
                while(!stack.isEmpty()&&height[stack.peek()]<height[i]){
                    int a = height[stack.peek()];
                    stack.pop();
                    if(!stack.isEmpty()){
                        int b = Math.min(height[stack.peek()],height[i]);
                        sum +=  (b-a)*(i-stack.peek()-1);
                    }
                    
                }
                stack.push(i);
            }
        }
        return sum;

    }
}

滑动窗口

🟡8. 无重复字符的最长子串(滞留)

题目跳转:https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/?envType=study-plan-v2&envId=top-100-liked

class Solution {
    public int lengthOfLongestSubstring(String s) {
        if(s.length()<=1)return s.length();
        HashSet<Character> hashset = new HashSet<>();
        int left = 0;
        int right = 0;
        int max =  0; 
        char[] chararr = s.toCharArray();
        for(int i = 0;i<chararr.length;i++){
            if(hashset.contains(chararr[i])){
                for(int j  = left ;j<=right;j++){
                    if(chararr[j]!=chararr[i]){
                        hashset.remove(chararr[j]);
                        left++;
                    }
                    else{
                        hashset.remove(chararr[j]);
                        left ++;
                        hashset.add(chararr[i]);
                        right = i;
                        left = j+1;
                        max = Math.max(max,hashset.size());
                        break;
                    }
                }
            }
            else{
                hashset.add(chararr[i]);
                right = i;
                max = Math.max(max,hashset.size());
            }
        }
        max = Math.max(max,hashset.size());
        return max;

    }
}

🟡9. 找到字符串中所有字母异位词(滞留)

题目跳转:https://leetcode.cn/problems/find-all-anagrams-in-a-string/description/?envType=study-plan-v2&envId=top-100-liked

class Solution {
    public List<Integer> findAnagrams(String s, String p) {
        //在长度为26的int数组target中存储字符串p中对应字符(a~z)出现的次数
        //如p="abc",则target为[1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
        //如p="bbdfeee",则target为[0,2,0,1,3,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
        int[] target = new int[26];
        for(int i = 0;i<p.length();i++){
            target[p.charAt(i)-'a']++;
        }
        int left = 0,right = 0;
        int[] window = new int [26];
        List<Integer> ans = new ArrayList<Integer>();
        while(right<s.length()){
            window[s.charAt(right) - 'a']++;
            if(right-left+1==p.length()){
                if(Arrays.equals(window,target)) ans.add(left);
                window[s.charAt(left) - 'a']--;
                left++;
            }
            right++;
        }
        return ans;

    }
}

子串

🟡10. 和为K的子数组(滞留)

题目跳转:https://leetcode.cn/problems/subarray-sum-equals-k/description/?envType=study-plan-v2&envId=top-100-liked

class Solution {
    public int subarraySum(int[] nums, int k) {
        if(nums.length<=0)return -1;
        int count = 0;
        int sum = 0;
        Map<Integer, Integer> hashmap = new HashMap<>();
        hashmap.put(0, 1);
         for(int i = 0;i < nums.length;i++){
            sum +=nums[i];
            if(hashmap.containsKey(sum-k)){
                count+=hashmap.get(sum-k);
            }
            if(hashmap.containsKey(sum)){
                hashmap.put(sum,hashmap.get(sum)+1);
            }
            else{
                hashmap.put(sum,1);
            }
        }
        return count;
    }
}

🔴11. 滑动窗口最大值(滞留)

题目跳转:https://leetcode.cn/problems/sliding-window-maximum/description/?envType=study-plan-v2&envId=top-100-liked

class Solution {
    public int[] maxSlidingWindow(int[] nums, int k) {
        if(nums.length<=0||k<=0)return new int [0];
        List<Integer> queue = new LinkedList<>();
        int [] arr = new int[nums.length-k+1];
        for( int i = 0;i<nums.length;i++){
            while(!queue.isEmpty()&&queue.getFirst()<i-k+1){
                queue.removeFirst();
            }
            while(!queue.isEmpty()&&nums[queue.getLast()]<nums[i]){
                queue.removeLast();
            }
            queue.add(i);
            if(i>=k-1)arr[i-k+1] = nums[queue.getFirst()];
        }
        return arr;
        
    }
}

🔴12. 最小覆盖子串(滞留)

题目跳转:https://leetcode.cn/problems/minimum-window-substring/description/?envType=study-plan-v2&envId=top-100-liked

class Solution {
    public String minWindow(String s, String t) {
        if(s.length() < t.length()) return "";

        HashMap<Character,Integer> hashmap = new HashMap<>();
        for(int i = 0;i < t.length();i++){
            char chartemp = t.charAt(i);
            hashmap.put(chartemp,hashmap.getOrDefault(chartemp,0)+1);
        }
        HashMap<Character,Integer> hashmap2 = new HashMap<>();
        int begin  = -1,minlen = -1;
        int count = 0;
        int left = 0;
        for(int right = 0;right<s.length();right++){
            char chartemp = s.charAt(right);
            hashmap2.put(chartemp,hashmap2.getOrDefault(chartemp,0)+1);
            if(hashmap2.get(chartemp)<=hashmap.getOrDefault(chartemp,0)){
                count++;
            }
            while(count>=t.length()){
                if(right-left+1<minlen||begin == -1){
                    begin = left;
                    minlen = right-left+1;
                }
                char temp = s.charAt(left);
                if(hashmap2.get(temp)<=hashmap.getOrDefault(temp,0)){
                    count--;
                }
                hashmap2.put(temp,hashmap2.get(temp)-1);
                left++;
            }
        }
        return begin ==-1?"":s.substring(begin,begin+minlen);


        
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript进阶3之参数按值传递、call,apply,bind和new的实现、继承的多种方式

JavaScript基础 参数按值传递按值传递共享传递 call、apply、bind和new的实现this软绑定硬绑定 call的实现第一步第二步第三步 apply的实现bind的实现返回函数的模拟实现传参的模拟实现构造函数效果的模拟实现构造函数效果的优化实现 new的实现初步实现 继承的多种方式&优缺…

能耗数据采集网关在钢铁企业的应用-天拓四方

能耗数据采集网关是一种集成多种传感器和数据通信技术的智能化设备&#xff0c;它能够实现对生产现场各类能耗数据的实时采集、存储和传输。通过网关设备&#xff0c;企业可以构建一个全面、高效的能源管理系统&#xff0c;对生产过程中的能源消耗进行实时监控和精准控制&#…

pcl弧度角度换算:rad2deg,deg2rad

角度弧度换算公式: 代码及结果在:cmath 中cos sin等常用函数的坑(弧度角度换算)-CSDN博客 pcl也有自带的rad2deg,deg2rad: 头文件 #include<pcl/common/angles.h> 代码如下 #include <iostream> #include<pcl/common/angles.h> int main() {vector<…

全球首个 AI 超级工程师:拥有全栈技能,一个指令就能完成整个开发过程

全球首位AI软件工程师Devin是由初创公司Cognition推出的&#xff0c;它被认为是世界上第一个完全自主的AI软件工程师[2][15]。Devin具备强大的编程和软件开发能力&#xff0c;能够在多个方面协助或完全独立地完成软件开发任务[15]。它的核心能力包括自学新语言、开发迭代App、自…

SpringBoot自动配置原理(简单总结)

SpringBoot2和SpringBoot3的自动配置原理大致相同&#xff0c;只是存放我们导入的starter中的配置类的信息的文件由对应starter的jar包下的META-INF/spring.factories文件变成了META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件。 此外…

数据分析之一些Excel函数

数据分析之Excel的使用 SUM()求和SUMIF()单条件求和SUMIFS()多条件求和日期函数YEAR()提取年份MONTH()提取月份DAY()提取日DATE()函数 SUBTOTAL()求和IF()函数IF嵌套 VLOOKUP()搜索取值MATCH()返回行值或列值INDEX()定位取值 SUM()求和 SUM(number1,[number2],…) 对选中的区域…

websocket逆向案例

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、案例地址二、分析流程三、逆向参数四、webSocket 交互位置总结 前言 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供…

Java项目:基于springboot实现的OA协同办公系统(源码+数据库+毕业论文)

一、项目简介 本项目是一套基于Springbootvue实现的付费自习室系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、…

以客户为中心、以市场为导向的创新研发能力:塑造企业核心竞争力的关键

在当今竞争激烈的市场环境中&#xff0c;企业的生存与发展往往取决于其核心竞争力。其中&#xff0c;以客户为中心、以市场为导向的创新研发能力&#xff0c;成为了塑造企业核心竞争力的关键要素。本文将探讨这一观点&#xff0c;并结合实际案例进行分析。 一、以客户为中心&am…

TCP收发——计算机网络——day02

今天主要讲了TCP的收发 TCP发端步骤 ①socket ②connect ③send ④closeTCP收端步骤 ①socket ②bind ③listen ④accept ⑤recv ⑥clise其函数主要有 connect int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);功能:发送链接请求参数:sockfd:套接…

Linux:锁和线程同步的相关概念以及生产者消费者模型

文章目录 加锁的基本原则死锁死锁的概念死锁的条件 线程同步生产者消费者模型模型的理解 理解cp问题条件变量 本篇总结的是关于Linux中锁的相关概念以及生产者消费者模型 加锁的基本原则 加锁的基本原则&#xff1a;谁加锁谁解锁&#xff0c;不要把加锁和解锁这样的操作放在两…

淘宝基于Nginx二次开发的Tengine服务器

最近在群里看到这样一张阿里云网关报错的截图&#xff0c;我保存下来看了下 看到下面有 Tengine提供技术支持&#xff0c;这个Tengine是什么东西呢&#xff1f;我搜索了下似乎是淘宝在nginx的基础上自己改的Web服务器 Tengine还支持OpenResty框架&#xff0c;该框架是基于Ngin…

ios xcode 15 PrivacyInfo.xcprivacy 隐私清单 查询应用使用的隐私api

1.需要升级mac os系统到13 兼容 xcode 15.1 2.升级mac os系统到14 兼容 xcode 15.3 3.选择 New File 4.直接搜索 privacy 能看到有个App Privacy 5.右击Add Row 7.直接选 Label Types 8.选中继续添加就能添加你的隐私清单了 苹果官网文档

UE4案例记录

UE4案例记录&#xff08;制作3D角色显示在UI中&#xff09; 制作3D角色显示在UI中 转载自youtube视频 https://www.youtube.com/channel/UCC8f6SxKJElVvaRb7nF4Axg 新建项目 创建一个Actor 场景组件->摄像机组件->场景捕获组件2D&#xff0c;之后添加一个骨骼网格体…

打破信息获取的界限:灵雀云推出自主研发智能文档机器人KnowledGenie

自LLM&#xff08;Large Language Model&#xff09;技术的迅速崭露头角以来&#xff0c;整个AI领域已经发生了翻天覆地的变化。LLM技术的不断进步&#xff0c;特别是以ChatGPT为代表的技术&#xff0c;为人工智能领域带来了前所未有的发展机遇。这种技术的出现&#xff0c;使得…

全国车辆识别代码信息API查询接口-VIN深度解析

我们先来介绍下什么是vin码&#xff0c;以及vin码的构成结构解析&#xff0c;汽车VIN码&#xff0c;也叫车辆识别号码&#xff0c;通俗可以理解为汽车的身份证号码。 VIN码一共分四大部分&#xff1a; 1~3位&#xff0c;是世界制造厂识别代号&#xff08;WMI&#xff09;&…

计算机网络 —— 运输层

运输层 5.1 运输层概述 运输层的主要任务是&#xff0c;如何为运行在不同主机上的应用进程提供直接的通信服务。运输层协议又称为端到端协议。 根据应用需求的不同&#xff0c;因特网的运输层为应用层提供了两种不同的运输协议&#xff0c;即面向连接的TCP和无连接的UDP 5.2…

c 语言中指针注意事项

看看下面两个 #include<iostream> using namespace std;int main() {int a 10;char p[6];*((int *)p) *(& a); // 正确写法*p *(&a); // 错误写法cout << *(int*)p; } 把原因写在评论区

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的手写数字和符号识别(深度学习训练+UI界面+训练数据集)

摘要&#xff1a;开发手写数字和符号识别对于智能交互系统具有关键作用。本篇博客详细介绍了如何运用深度学习构建一个手写数字和符号识别&#xff0c;并提供了完整的实现代码。该系统基于强大的YOLOv8算法&#xff0c;并对比了YOLOv7、YOLOv6、YOLOv5&#xff0c;展示了不同模…

金融需要多样性,量化需要C++!通过本文,你可以知道:1、为什么是C++

通过本文&#xff0c;你可以知道&#xff1a; 1、为什么是C 2、Python的用武之地 3、量化C岗位薪酬水平 C VS Python 量化交易系统开发语言主要用C&#xff0c;也有人用Python。 但是从经验看&#xff0c;用C开发的量化交易系统能够让在系统中程序运行的速度更快。 量化交易…