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