Twelfth Week's ARST

ARST

Algorithm: 每周一道Leetcode
Review: 每周阅读并点评至少一篇英文技术文章
Tip: 每周学习技术技巧
Share: 每周分享一篇有观点和思考的技术文章

A

Leetcode905——Sort Array By Parity
题目要求:
Given an array A of non-negative integers, return an array consisting of all the even elements of A, followed by all the odd elements of A.
You may return any answer array that satisfies this condition.
Example 1:

Input: [3,1,2,4]
Output: [2,4,3,1]
The outputs [4,2,3,1], [2,4,1,3], and [4,2,1,3] would also be accepted.

Note:
1.1 <= A.length <= 5000
2.0 <= A[i] <= 5000

C++编写
初次代码如下

class Solution {
public:
    vector<int> sortArrayByParity(vector<int>& A) {
        vector<int> B;
        for(int i=0;i<A.size();i++)
        {
            if(A[i]%2==0)
            {
                B.push_back(A[i]);
            }
        }
        for(int j=0;j<A.size();j++)
        {
            if(A[j]%2==1)
            {
                B.push_back(A[j]);
            }
        }
        return B;
    }
};

这个办法是比较常规的,用两个for循环把偶数先放进去,再放奇数进去,本来是想偶数遇到一个放进B之后就删掉它,但是自己写了之后就发现会出问题,也不知道什么原因,如果有哪位朋友这样做的希望可以借代码一看学习学习。当然也不知道要返回[4,2,3,1], [2,4,1,3], and [4,2,1,3]这三个该如何操作,所以说这道题还是值得思考,等想到好的方法再来多添加几个代码。

R

什么是人工智能(AI)?
现在的人工智能简直不要太火,其实不能不说在我们的日常生活中人工智能已经是为我们带来了许多便利,那人工智能到底是什么,难道真的是具有超级智慧的机器人吗?这并没有一个具体的定义,它被用来给我们的生活带来便利,其实简单来说呢也就是一些计算机程序,它用于解决一些对我们人类来说很困难,但是对计算机来说却很简单的事情。

T

直到这周考了程序设计之后,才发现自己对构造函数、复制构造函数、重载赋值运算符之间的关系其实并没有搞清楚,随便搞了一个代码进行了测试

#include<iostream>
#include<cstring>
using namespace std;
class Student
{
private:
    int id;
    char* name;
    float score;
public:
    Student(int i=0,char* c=NULL,float s=0);
    Student(Student&);
    Student& operator = (Student&); 
    ~Student()   { delete []name; }
};

Student::Student(int i,char* c,float s)
{
    id=i;
    score=s;
    if(c==NULL)   
    {
        name=NULL;
    }
    else
    {
        name=new char[strlen(c)+1];
        strcpy(name,c);
    }
    cout<<"Construct a student."<<endl;    
}

Student::Student(Student& s)
{
    id=s.id;
    score=s.score;
    name=new char[strlen(s.name)+1];
    if(name !=0)
    {
        strcpy(name,s.name);
    }
    cout<<"Copy construct a student."<<endl;
}

Student& Student::operator=(Student& s)
{
    id=s.id;
    score=s.score;
    delete []name;
    name=new char[strlen(s.name)+1];
    strcpy(name,s.name);
    cout<<"Overload a student."<<endl;
    return *this;
}

int main()
{
    char n[]="wang";
    Student a(1,n,86);
    Student b=a;
    Student c(a);
    Student m;
    m=a;
}

输出结果如下:

Construct a student.
Copy construct a student.
Copy construct a student.
Construct a student.
Overload a student.

这里我有一点不明白就是为什么直接Student b=a;是调用的复制构造函数而不是用的赋值运算符。主函数换成下面一个就更是有点令我有点困惑了。

int main()
{
    Student a;
    Student b=a;
    Student c(a);
    Student m;
    m=a;
}

输出结果如下:

Construct a student.

这个起初是没怎么想通,但是当我把构造函数中的char* c=NULL改成char* c="wang"时,虽说运行会有一些错误,不过最后输出是和上面一样的,当然如果改成这样,后面的一些语句也是要得到相应的修改才能够使得运行完美,不过这里只是探究三者是怎么样在用,这里就不多赘述,看了代码和输出应该是很明显的。其实这里面的水甚至远不止这么深,下周可能还是会继续谈这个话题。

S

上学期学了Python,其实只是学了些基本操作,加上自己也没怎么去研究它,实属一个菜鸡,不过现在Python确实是非常火,机器学习、人工智能、神经网络,看来确实是有点用的,有时候总免不了要去网上爬点东西下来,学学如何用Python写爬虫程序。
[Python]新手写爬虫全过程

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值