Task01:数组(1天)
理论部分
理解数组的存储与分类。
实现动态数组,该数组能够根据需要修改数组的长度。
练习部分
1. 利用动态数组解决数据存放问题
编写一段代码,要求输入一个整数N,用动态数组A来存放2~N之间所有5或7的倍数,输出该数组。
示例:
输入:
N = 100
输出:
5 7 10 14 15 20 21 25 28 30 35 40 42 45 49 50 55 56 60 63 65 70 75 77 80 84 85 90 91 95 98 100
采用matlab代码编写(就是图个方便)
function result=task01(n)
result = [];
for i =2:n+1
if mod(i,5)==0||mod(i,7)==0
result=[result i];
end
end
结果如下图所示:
2. 托普利茨矩阵问题
如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵。
给定一个M x N的矩阵,当且仅当它是托普利茨矩阵时返回True。
示例:
输入:
matrix = [
[1,2,3,4],
[5,1,2,3],
[9,5,1,2]
]
输出: True
解释:
在上述矩阵中, 其对角线为: "[9]", "[5, 5]", "[1, 1, 1]", "[2, 2, 2]", "[3, 3]", "[4]"。 各条对角线上的所有元素均相同, 因此答案是True。
代码如下:
function bool=toplici(M)
[a,b]=size(M);
for i=1:a-1
for j=1:b-1
if M(i,j) ~= M(i+1,j+1)
bool = 'false ';
else
bool = 'true ';
end
end
end
结果如下图所示:
3. 三数之和
https://leetcode-cn.com/problems/3sum/
给定一个包含 n 个整数的数组nums,判断nums中是否存在三个元素a,b,c,使得a + b + c = 0?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
示例:
给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:
[
[-1, 0, 1],
[-1, -1, 2]
]
给定代码快如下:
%还有待改进~~
function result=task01sum(M)
M=sort(M);
result=[];
result1=[];
[~,b]=size(M);
for i=1:b
if M(1,i)>0
result=[];
end
if i>1&& M(1,i)== M(1,i-1)
continue
end
L=i+1;
R=b-1;
while (L<R)
if(M(1,i)+M(1,L)+M(1,R)==0)
result1=[ M(1,i),M(1,L),M(1,R)];
while(L<R && M(1,L)==M(1,L+1))
L=L+1;
end
while(L<R && M(1,R)==M(1,R-1))
R=R-1;
end
L=L+1;
R=R-1;
elseif (M(1,i)+M(1,L)+M(1,R)>0)
R=R-1;
else
L=L+1;
end
end
result=[result;result1];
end
结果如下图所示:
来源:CSDN
作者:笃厚我无
链接:https://blog.csdn.net/qq_40896597/article/details/103862479