当前位置: 首页 > article >正文

实习冲刺Day21

算法题

最长公共前缀

14. 最长公共前缀 - 力扣(LeetCode)

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        if(strs.size()==0)return "";//如果数组为空,直接返回空字符串
        string ans = strs[0];//ans先存放数组第一个元素
        string str="" ;//定义各一个空串,一会承接相同的前缀
        for (int i = 0; i < strs.size(); i++) {//遍历数组
            if(strs[i]=="")return "";//如果数组中有空串,直接返回空串
            int n = min(ans.length(), strs[i].length()); //比较           
            for(int j=0;j<n;j++){              
                if (ans[j] != strs[i][j]) {//字符不相等,直接跳出循环
                    break;
                } 
                str+=ans[j];//相等的存放在str中
            }
            ans=str;//将相同的字符赋给ans继续去比较
            str="";//将字符串str置为空
            if(ans.length()==0){
                return "";//当ans为空的时候直接返回“”;
            }
        }
        return ans;//返回公共的前缀
    }
};

基础知识

C++函数的返回值在内存中的传递过程

当函数被调用时,系统会为该函数的执行创建一个新的栈帧。栈帧是内存中用于存储函数调用信息的连续区域:局部变量、参数、返回地址、保存寄存器

C/C++函数返回值会使用eax寄存器来传递

函数的返回机制依赖于函数的返回类型。

对于基本数据类型,返回值通常通过寄存器传递,或者如果返回值较大,可能会通过拷贝一个临时对象来传递。
对于大型对象或结构体,返回时可能会涉及到复制构造函数(如果返回值是值传递)或移动构造函数的调用,以优化性能。
对于引用或指针类型的返回值,返回的是地址,不涉及复制或移动操作。减少调用拷贝构造。

虚拟内存,为什么要使用虚拟内存,虚拟内存可能比物理内存大吗

操作系统将内存分分成用户态与内核态

内存又分为物理内存与与虚拟内存

如果在物理内存下,在同一个内存中写入两个程序是不可能的,这会导致程序崩溃,这就需要操作系统为进程分配独立的虚拟地址来进行,各个进程都有自己的地址,互不干扰,这些进程不能访问操作系统的物理内存地址,操作系统会提供一种机制来解决虚拟地址怎么落到物理内存里。

程序中用的地址都是虚拟内存地址,实际上硬件里边的空间是物理内存地址。

 虚拟内存地址是由cpu芯片中的MMU进行映射到物理内存地址


http://www.kler.cn/a/393667.html

相关文章:

  • 【go从零单排】JSON序列化和反序列化
  • 论文解析:边缘计算网络中资源共享的分布式协议(2区)
  • 什么岗位需要学习 OpenGL ES ?说说 3.X 的新特性
  • 【算法】——二分查找合集
  • 图像处理实验二(Image Understanding and Basic Processing)
  • k8s集群安装(kubeadm)
  • JSX 是react 专有的吗
  • Simulink中Matlab function使用全局变量
  • 我们来学mysql -- EXPLAIN之select_type(原理篇)
  • Rocky9/Ubuntu使用pip安装python的库mysqlclient失败解决方式
  • C# 实现对指定句柄的窗口进行键盘输入的实现
  • C++研发笔记13——C语言程序设计初阶学习笔记11
  • MongoDB新版本安装配置教程(7.0.15版本-zip下载)
  • 构建Spring Boot编程训练系统:全面指南
  • springboot初体验
  • [Docker#5] 镜像仓库 | 命令 | 实验:搭建Nginx | 创建私有仓库
  • 加入GitHub Spark需要申请
  • Hive基础
  • JUC学习笔记
  • 零基础Java第十六期:抽象类接口(二)
  • 【NLP】2024 年十大 RAG 框架 Github
  • Redis设计与实现 学习笔记 第十七章 集群
  • 2024 kali操作系统安装Docker步骤
  • 【论文复现】交通路口智能监测平台实现
  • Ajax 获取进度和中断请求
  • 华为OD机试真题-仿LISP计算