数据结构和算法之前学过,现在跟着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社区