朱建国 发布的文章

题目:
Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array, and it should return false if every element is distinct.
https://leetcode.com/problems/contains-duplicate/

思路:
思路一:两层循环,第一次循环里取一个数,在第二次循环里去其比较后面的数字是之否相等。算法复杂度双层递减循环,结果超时。
思路二:一层循环,使用map保存该数组,保存之前先判断是否存在,存在则返回true,不存在则记录。算法复杂度仍然比较高
思路三:看到讨论帖子里的思路,先排序,然后挨个比较前后的顺序,相等则返回true,不相等继续只结尾返回false。代码如下

代码:

{
public:

bool containsDuplicate(vector<int>& nums)
{
    sort(nums.begin(), nums.end());
    for (size_t i = 1; i < nums.size(); i++)
    {
        if (nums[i - 1] == nums[i])
        {
            return true;
        }
    }
    return false;
}

}
总结:
1、简化思路,使用现有的api接口
2、尽量不要使用双重循环来解决问题。

米粒儿现在正处在见啥咬啥的阶段,还吐唾液,婆婆说是要长牙了,自然而然的讨论到了先长下面牙齿还是上面牙齿的问题。婆婆说米粒儿下面分牙瓣了,要先长下面牙齿,说以前小宝就是先长下面牙齿的,然后我就跟她犟上了,说先长上面的,她坚持先长下面了,争执了好一会最后说等以后看他先长哪里的吧。

其实在跟她争执的时候,自己已经感觉自己是错误的,但是非要跟她犟下去坚持下去,是因为在谈论到孩子问题上的时候,总是说小宝怎样小宝怎样,有时候哄米粒儿的时候还能叫错名字,把米粒儿叫成宝宝,心里不舒服而已。作为新手妈妈总觉得孩子是独一无二的个体,总是想看到自己孩子一点一滴的变化,发现一点一滴的改变,这发现的过程,改变的过程是令人欣喜而又幸福甜蜜的过程。而对婆婆来说,看见孩子长牙齿和每个过程,都是经历N次的事情,觉得是跟你传授经验,而宝宝是她带大的孩子,她很有这些养孩子的经验,但正是这些经验,是我最不愿意听到的,因为在我发现米粒儿一点点小小变化很欣喜很幸福的时候,她的经验能让我的心情回到冰点,虽然非常能理解婆婆她的好意。

话题扯多了,上班之后马上查了下孩子长牙的顺序,证明婆婆说的是对的,哈哈,婆婆对不起,我错了,道歉哟。下面放一张长牙顺序图,给新手妈妈和未来宝宝妈妈们看看,记清楚哦,这样跟妈妈婆婆讨论的时候不会犯同样的错误哦,哈哈。

海阔天空
2015年8月7日 下午3:55
其实很多不是原则性的问题,可以少一点争执,毕竟老人一个人过来照顾孩子也不容易;而且都是为了孩子好,那就都多一些宽容吧。

在水一方
2015年8月12日 上午9:39
嗯,是呀,所以一直压抑着自己的想法和个性奶奶怎么样弄就成。可是有时候偶尔还是会爆出坏脾气,特别是总是拿他跟小宝或者其他人比较的时候,最讨厌的比较来比较去,因为不希望自己的孩子养成攀比的性格,即使没有攀比,大人总是用他跟别的孩子比较,很容易形成孩子性格的自卑或者自负。
在怀孕期间,还跟他爸爸讨论养孩子的注意事项,他爸爸还积极的看育儿的书籍,可是发现孩子出生后大部分都是自己在坚持一些东西。因为我和婆婆彼此都很客气,不能像跟自己妈妈那样有什么说什么,所以都不知道该如何跟孩子奶奶交流这些问题,说什么的时候奶奶有自己的经验,我坚持我的方法,所以不知道如何处理这些问题。

第一天
2015年x月xx日 9:00
医生从产房里把米粒和妈妈推了出来,这时候的宝宝还不知道已经来到一个全新的世界了,他还在安详的打个盹呢。

2015年x月xx日 11:20
米粒和妈妈躺在一起睡会觉,妈妈也累了,米粒也累了,米粒,你长大要好好疼你妈妈哦。

第二天
2015年x月xx日 17:23
爸爸去医院看望米粒,抱了抱这个可爱的小家伙,你可真小,爸爸像抱个小猫咪一样抱着米粒

第三天
2015年x月xx日 18:17
米粒,再睡一晚上,你就能和妈妈一起回家了

题目:
Say you have an array for which the ith element is the price of a given stock on day i.
Design an algorithm to find the maximum profit. You may complete as many transactions as you like (ie, buy one and sell one share of the stock multiple times). However, you may not engage in multiple transactions at the same time (ie, you must sell the stock before you buy again).

思路:
低买高卖,贪心算法。每次判断是否需要买和卖的时候,都要用当前的值和下一个值比较,如果有利可图,则操作;否则,不处理。算法复杂度:O(n)

代码:

class Solution {
public:

const int NULL_PRICE = -1;
int maxProfit(vector<int>& prices) {
    unsigned int max_limit = prices.size();
    int buy_price = NULL_PRICE;
    int max_profit = 0;
    for (unsigned int i = 0; i < max_limit; i++)
    {
        if ((i + 1) >= max_limit)
        {
            break;
        }

        int total_price = prices[i];
        int tomorrow_prive = prices[i + 1];

        if (total_price > tomorrow_prive)
        {
            if (buy_price != NULL_PRICE)
            {
                max_profit += total_price - buy_price;
                buy_price = NULL_PRICE;
            }
        }

        if (total_price < tomorrow_prive)
        {
            if (buy_price == NULL_PRICE)
            {
                buy_price = total_price;
            }
        }
    }

    if (buy_price != NULL_PRICE)
    {
        max_profit += prices[max_limit - 1] - buy_price;
    }

    return max_profit;
}

};
总结:
1、思路比较简单,主要用到的是贪心算法,即局部最优。
2、注意最小值有可能为0。

昨天下班回家的时候,婆婆带着儿子在小区里玩,跟小家伙打招呼,懵懵懂懂的也不知道是妈妈吧。

一起回家后,儿子的目光一直追随着我,放冰包,放奶,换鞋,去卫生间,洗手,做完这一系列事情后,儿子那期盼的眼睛里,眼泪已泫然欲滴。儿子在到家的第一时间张开手要妈妈,可是妈妈却没有及时的回应,儿子,你是伤心了吧。

看到儿子这样的表现,虽然好累好累,但是满满的幸福感,满满的感动,儿子,你也是很想妈妈的,对吧!