本周知识体会以及题解心得

本周的学习中,我听取了老师的建议,在学习的过程中碰到自己不理解的,先解决再继续看题。这样的方法确实令我收获颇丰,但同时也延长了我学习题解的时间,因此,本周只完成了STL相关例题,搜索部分例题以及资料中的相关例题,约三十五道左右。很是惭愧,由于自己知识的理解浅显和思路简单化,导致自己平均每一道题的学习时间都在半小时以上,同时也使自己在连续看数道题后思路阻障,降低了学习效率,因此来看,个人的学习习惯与思维方式也确实需要改进。

不过,单单抱怨是没用的,总结才能得到更多的经验,接下来,我简单的总结一下本周的知识体会与题解心得。

一.本周知识总结

由于本周在看题解时,主要涉及到的都是自己曾经学习的知识,因此,自己本周在学习时,更多的偏向于复习与深度理解自己曾经学过的知识(如,复习了vector动态数组,set的其他操作,如set.find()等等),同时将一些自己平时一知半解但非常常用的概念进行理解。因此本周新知识较少,更偏向于总结。

一.迭代器

其实,迭代器可以理解为一个更强的指针,用来遍历容器中连续的数据结构。但要注意,迭代器不能简单以指针理解,它需要返回迭代器的成员,即begin和end。(其中,end指向的是尾元素的下一个元素,是不存在的一个元素,不能用end进行一些操作!)

迭代器的具体代码如下:

#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int >vec;
    for(int i=0;i<10;i++){
        vec.push_back(i);
    }
    vector<int >::iterator it;
    for(it=vec.begin();it!=vec.end();it++)
        cout<<*it<<" ";
    cout<<endl;
    return 0;
}

要注意,带*输出迭代器名字才能输出内容。

二.递归

递归,用一种朴素狭隘的语言描述,就是一个函数,在自己的函数体中再调用自己,就能理解为递归。通过阅读一些资料,我得出了一个理解递归最简单的方法,即三步走:一看函数功效,二找结束条件,三出范围变化。

一看函数功效,很容易理解,就是判断函数的作用是什么,这其实就是建立递归的基础,只有明白每一步得到的变化与结果,才能利用好递归得出自己想要的答案。

二找结束条件,因为函数在不断的调用自身,因此一定要提供一个“出口”,也就是结束条件,以免进入死循环。一般来说,都是利用if语句进行判断,而结束条件,也就是我们想要得到的结果。

三出范围变化,因为每次函数的操作相同,我们不可能让函数一直对着一个相同的数据反复计算,因此,每一次我们都要改变数据的范围,将其适当变大或变小,以便于我们更好的得到结果。一般而言,都是将自己在本次循环中得到的数据,或利用的数据进行合理修改,作为下次的函数参数进行运算。

下面,我利用一个简单的斐波那契数列代码表示一下递归:

int f(int n)//一般而言,n就是范围变化的量
{
    if(n <= 2)
    {
        return 1;
    }
    return f(n-1) + f(n - 2);//这里就是递归的使用
}

本周其实也涉猎了二叉树,链表等一些知识,不过还没有系统的深入了解与学习,本周就先不总结了,作为下周的任务目标吧。

二.比赛心得

本周的比赛我只完成了两道题,不得不承认,本周发挥的确实不尽人意。原本自己是早早将第一题的思路给想明白并解决了主体部分,但由于被周围嘈杂的环境影响,心情烦躁影响到心态,导致自己原本能早早出的题一而再再而三的修改,最终不得不重新打,以至于第一道出题时间极慢。这是我应该反思的第一个问题,不能选择在嘈杂的环境中比赛,下次比赛,我应该选择一个安静的房间敲代码,尽量避免舍友的嘈杂,用最好的心态去比赛。

在第二道题的出题过程中,我不得不承认我是占了一定的运气比例的。我并没有看到“必须使用当前最大数量糖果”的提示,导致自己在设想的多种情况中纠结万分,最后误打误撞选择了一个自己认为有bug但意外符合题意的代码提交。这也是我自己老生常谈的一个问题了,要尽量的看全题与提示。这次虽然走运对了,但下次就不一定了。同时要注意,自己不能多想。大多时候只会影响自己的正确思路。

对于本周题解的收获,我表示,对自己思路的开阔起到了很大作用,有一些具体的例题我在纸上做了笔记,很多题目对知识的熟练运用令我耳目一新,这也提醒我,要多思考如何更有效率的利用已有知识,同时,要效仿大多题解的方法,先想好自己每一步究竟是干什么的,做好思路大纲,再有条不紊的进行代码编译。

本周经验不足,安排的不是很合理,下周要吸取教训,合理安排时间进行学习,努力学习更多新东西,让自己在比赛上,努力朝着游刃有余进发。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值