跟着Datawhale重学数据结构与算法

news2024/11/26 12:23:11
数据结构和算法之前学过,现在跟着Datawhale重学一下,就当是监督自己学习,重新拾起来养成一个好的习惯,以后可以一直坚持下去。

开源链接:【 教程地址 】【电子网站】

首先:

程序
算法
数据结构

数据结构是一种工具,算法是使用工具的方法,而程序设计就好比是干一件事情我必须要具备的两个因素:怎么干?和借助什么干?这两个问题我们需要解决。而如何选择这俩个使得我们干事情更省力更轻松才是最重要的,而这个对应了程序设计的时间复杂度和空间复杂度,也就体现出了数据结构和算法的精妙之处。

1.数据结构分类:

数据结构
逻辑结构
物理结构
集合:从属关系
线性:一对一
树形:一对多
图:多对多
顺序存储:连续存储单元
链式存储:任意存储单元,指针

强调的知识点:
1.顺序存储数据元素再内存中连续存放,通过下标访问元素;而链式存储数据元素在内存中可以不连续存储,通过指针连接在一起。
2.顺序存储与链式存储的优缺点:

顺序存储:
优点:快速通过下标访问元素,存储密度高,没有指针开销;
缺点:插入和删除需要移动大量的元素。效率较低;需要预先分配足够大的连续存储空间。
链式存储:
优点:插入删除效率高,只修改指针;可以动态分配内存,不需要预先知道存储大小。
缺点:访问元素需要顺序遍历,效率较低;存储密度低,需要额外的存储指针。

2.算法:
解决特定问题求解步骤的准确而完整的描述,在计算机中表现为一系列指令的集合,算法代表着用系统的方法描述解决问题的策略机制。
算法其实就是一系列的运算步骤,这些运算步骤可以解决特定的问题。除此之外,算法 应必须具备以下特性:
输入,输出,有穷性,特定性,可行性。
算法追求的目标有 5 个:正确性、可读性、健壮性、所需运行时间更少(时间复杂度更低)、占用内存空间更小(空间复杂度更低)。

3.算法复杂度

复杂度
时间复杂度
空间复杂度

在这里插入图片描述
要掌握的一些排序算法的复杂度:
在这里插入图片描述
空间复杂度
在这里插入图片描述
Leetcode练习题目
1.2235.两整数相加

class Solution {
public:
    int sum(int num1, int num2) {
        return num1+num2;
    }
};//跟hello word一样.....

2.1929.数组串联

class Solution {
public:
    vector<int> getConcatenation(vector<int>& nums) {
        //分析,知道输入个数,然后.....
        int n=nums.size();
        vector <int> ans(2*n);
        for(int i=0;i<n;i++){
            ans[i]=nums[i];
            ans[i+nums.size()]=nums[i];
        }
    return ans;
    }
};
};//没难度

3.0771. 宝石与石头

class Solution {
public:
    int numJewelsInStones(string jewels, string stones) {
        //遍历查找呗,哈希表最简单
        int a[128]={0};
        for(char i : jewels){
            a[i]=1;
        } 
        int ans=0;
        for(char i : stones){
            ans+=a[i];
        }
        return ans;
    }
};

4.1480 一维数组的动态和

class Solution {
public:
    vector<int> runningSum(vector<int>& nums) {
        //用一个寄存器存下来当前加和的值,加到下一个
        //先生成一个与nums相同大小的数组。
        vector<int> a(nums.size());
        a[0]=nums[0];
        for(int i=1;i<nums.size();i++){
            a[i] = a[i-1]+nums[i];
        }
    return a;
    }
};

5.0709. 转换成小写字母

class Solution {
public:
    string toLowerCase(string s) {
        //遍历->判断->改正 three step完成
        int n=s.size();
        for(int i=0;i<n;i++)
        {
            if (s[i]>='A' && s[i]<='Z'){
                s[i]='a'+ (s[i] - 'A');
            }
        }
    return s;
    }
};

6.1672. 最富有客户的资产总量

class Solution {
public:
    int maximumWealth(vector<vector<int>>& accounts) {
        //返回,行最大,直接暴力
        int flag=0;
        int b=0;
        int hang=accounts.size();
        for(int i=0;i<hang;i++){
            for(int j=0;j<accounts[i].size();j++){
                b=b+accounts[i][j];
            }
            flag=max(flag,b);
            b=0;
    //flag记录全局的最大值,b记录本行的最大值
        }
    return flag;
    }
};

在这里插入图片描述

参考资料:

[1] 【教程地址 】[电子网站]
[2]Hello 算法教程

感谢:DataWhale社区

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

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

相关文章

STM32-ADC(独立模式、双重模式)

ADC简介 18个通道&#xff1a;外部信号源就是16个GPIO回。在引脚上直接接模拟信号就行了&#xff0c;不需要侄何额外的电路。引脚就直接能测电压。2个内部信号源是内部温度传感器和内部参考电压。 逐次逼近型ADC: 它是一个独立的8位逐次逼近型ADC芯片&#xff0c;这个ADC0809是…

C语言 | 自定义类型:联合和枚举

目录&#xff1a; ----前言 1. 联合体 1.1 联合体类型的声明 1.2 联合体的特点 1.3 相同成员的结构体和联合体对比 1.4 联合体大小的计算 1.5 联合的使用 1.6联合体的练习 2. 枚举 2.1 枚举类型的声明 2.2 枚举类型的优点 2.3 枚举类型的使用 --前言&#xff1a; c语言中内…

String类的几个常用方法

描述 以下程序演示了String类的几个常用方法&#xff0c;包括比较字符串、取得字符串长度、拆分字符串、获取子串、字符串转换成字符数组、获取字符串位置、替换字符串等方法。 案例 public class StringTest {public static void main(String[] args) {//比较字符串String …

阿赵UE学习笔记——28、粒子系统Niagara简介

阿赵UE学习笔记目录 大家好&#xff0c;我是阿赵。   继续学习虚幻引擎的使用。这次开始学习粒子系统的使用。 一、Cascade系统 在介绍UE5的Niagara系统之前&#xff0c;必须先介绍一下旧版本的粒子系统。   在UE4的时候&#xff0c;虚幻引擎的粒子系统叫做Cascade&#x…

ubuntu 使用conda 创建虚拟环境总是报HTTP错误,转换多个镜像源之后仍报错

最近在使用Ubuntu conda创建虚拟环境时&#xff0c;总是报Http错误&#xff0c;如下图所示&#xff1a; 开始&#xff0c;我以为是conda 镜像源的问题&#xff0c;但是尝试了好几个镜像源都不行&#xff0c;还是报各种各样的HTTP错误。后来查阅很多&#xff0c;总算解决了。解…

数学建模--深入剖析线性规划(模型全方位解读+代码分析)

1.简介 &#xff08;1&#xff09;线性规划三要素 &#xff08;2&#xff09;模型适用赛题 2.典例讲解 &#xff08;1&#xff09;问题分析 目标函数是净收益尽可能大&#xff0c;风险尽可能小&#xff1b; 约束条件是交易费的分段函数&#xff0c;以及每一笔投资都是非负数&am…

【精读文献】Scientific data|2017-2021年中国10米玉米农田变化制图

论文名称&#xff1a;Mapping annual 10-m maize cropland changes in China during 2017–2021 第一作者及通讯作者&#xff1a;Xingang Li, Ying Qu 第一作者单位及通讯作者单位&#xff1a;北京师范大学地理学部 文章发表期刊&#xff1a;《Scientific data》&#xff08…

hot100 -- 链表(中)

不要觉得力扣核心代码模式麻烦&#xff0c;它确实比不上ACM模式舒服&#xff0c;可以自己处理输入输出 只是你对 链表 和 return 的理解不到位 &#x1f442; ▶ 屿前世 (163.com) &#x1f442; ▶ see you tomorrow (163.com) 目录 &#x1f382;两数相加 &#x1f6a9;删…

android不同版本(支持>10)获取当前连接的wifi名称

1、AndroidManifest.xml 配置权限 <uses-permission android:name"android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name"android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name&q…

Rust腐蚀服务器清档多教程

Rust腐蚀服务器清档多教程 大家好我是艾西&#xff0c;一个做服务器租用的网络架构师。上期教了大家怎么搭建服务器以及安装插件等那么随着大家自己架设服或是玩耍的时间肯定会有小伙伴想要去新增开区数量或是把原本的服务器进行一些调整等&#xff0c;那么今天主要聊的就是怎…

Cohere Command R+:企业级可扩展大模型

Command R 是一种最先进的 RAG 优化模型&#xff0c;旨在处理企业级工作负载&#xff0c;并首先在 Microsoft Azure 上提供 今天&#xff0c;我们推出了 Command R&#xff0c;这是我们最强大、可扩展的大型语言模型 &#xff08;LLM&#xff09;&#xff0c;专为在实际企业用…

tailwindcss在manoca在线编辑智能感知

推荐一下monaco-tailwindcss库&#xff0c;它实现在monaco-editor网页在线编辑器中对tailwindcss的智能感知提示&#xff0c;在利用tailwindcss实现html效果布局。非常的方便。 生成CSS

Maven POM元素解析(二)

一、parent <parent>元素包含定位此项目将从中继承的父项目所需的信息。注意&#xff1a;此元素的子元素不是插值的&#xff0c;必须作为文字值给定。 ElementTypeDescriptiongroupIdString要从中继承的父项目的组id。artifactIdString要从中继承的父项目的项目id。ver…

python零基础入门笔记【源源老师】

1. print() 输出 &#xff08;1&#xff09;认识英文单词 print: 输出&#xff08;2&#xff09;print() 的作用 print()&#xff1a;用于在控制台上输出你想要的内容。 &#xff08;3&#xff09;代码演示 举例1&#xff1a; 【注意&#xff1a;】用双引号包裹的&#xff0…

java创建线程池的方法

简介 线程池是一种用于管理和重用线程的机制&#xff0c;它可以有效地管理线程的创建和销毁&#xff0c;减少线程创建和销毁的开销&#xff0c;并且能够控制并发线程数量&#xff0c;避免资源耗尽和系统过载。Java 提供了java.util.concurrent 包来支持线程池的实现。 1.Threa…

java(网络编程)

什么是网络编程? 在网络通信协议下&#xff0c;不同计算机上运行的程序&#xff0c;进行的数据传输。 应用场景&#xff1a;即时通信、网游对战、金融证券、国际贸易、邮件、等等 不管是什么场景&#xff0c;都是计算机跟计算机之间通过网络进行数据传输 Java中可以使用ja…

Qt | 事件第二节

Qt | 事件第一节书接上回 四、事件的接受和忽略 1、事件可以被接受或忽略,被接受的事件不会再传递给其他对象,被忽略的事件会被传递给其他对象处理,或者该事件被丢弃(即没有对象处理该事件) 2、使用 QEvent::accept()函数表示接受一个事件,使用 QEvent::ignore()函数表示…

fork()的一道面试题

前言&#xff1a;题源 #include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <sys/wait.h> int main(void) {int i;for(i0; i<2; i){fork();printf("-");}wait(NULL);wait(NULL);return 0; }知道一点fork()这个系统…

移动硬盘盒支持PD充电:优势解析与实际应用探讨

随着科技的飞速发展&#xff0c;数据存储和传输的需求日益增长&#xff0c;移动硬盘盒作为便携式存储设备的重要载体&#xff0c;其功能和性能也在不断提升。近年来&#xff0c;越来越多的移动硬盘盒开始支持PD&#xff08;Power Delivery&#xff09;充电技术&#xff0c;这一…

【云计算】云数据中心网络(四):IPv6 网关

云数据中心网络&#xff08;四&#xff09;&#xff1a;IPv6 网关 1.什么是 IPv6 网关2.IPv6 网关设计思路3.IPv6 网关的主要应用场景3.1 IPv6 私网通信3.2 IPv6 互联网通信3.3 IPv6 互联网通信&#xff08;仅主动访问&#xff09; 1.什么是 IPv6 网关 2017 年&#xff0c;中国…