<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Zen_Ivan的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Zen_Ivan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Zen_Ivan]]></copyright><item><title><![CDATA[LeetCode 977. Squares of a Sorted Array]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/111937694</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/111937694</guid><author>Zen_Ivan</author><pubDate>Tue, 29 Dec 2020 21:39:59 +0800</pubDate><description><![CDATA[题目
Given an integer array nums sorted in non-decreasing order, return an array of the squares of each number sorted in non-decreasing order.
给定一个非递减排序的数组，返回每个数组的平方的非递减排序。
思路
每个元素取平方，再排序。
代码实现
int* sortedSquares(int* nums, int numsSize, int* returnSize){
  ]]></description><category></category></item><item><title><![CDATA[LeetCode 1295. Find Numbers with Even Number of Digits （C语言）]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/111874395</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/111874395</guid><author>Zen_Ivan</author><pubDate>Mon, 28 Dec 2020 20:42:15 +0800</pubDate><description><![CDATA[题目

Given an array nums of integers, return how many of them contain an even number of digits.

给定一个整数数组nums，返回位数是偶数的数组元素的个数。

思路

关键：根据一位数整除10一次得0，二位数整除10两次得0，...，n位数整除10n次得0。

让每一个数组不断整除10直到变为0，每整除一次将其位数计数器digits+1。

实现代码


int findNumbers(int* nums, int]]></description><category></category></item><item><title><![CDATA[LeetCode 485. Max Consecutive Ones]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/111874167</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/111874167</guid><author>Zen_Ivan</author><pubDate>Mon, 28 Dec 2020 20:29:51 +0800</pubDate><description><![CDATA[题目

Given a binary array, find the maximum number of consecutive 1s in this array.

给定一个二进制数组（元素只有0和1的数组），找出数组中最多有多少个连续的1？



思路

遍历整个数组，如果遇到1则将计数器count+1，如果遇到0则将result赋值为Max{count, result}，然后count归零。最后一段的可能是连续的1没有0，则此情况下无法触发检查result的代码，result少更新了一次，因此遍历完.]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup 100000584 问题 G: 找零钱]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/108137869</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/108137869</guid><author>Zen_Ivan</author><pubDate>Thu, 20 Aug 2020 23:44:51 +0800</pubDate><description><![CDATA[思路：

本题同问题D及问题F类似，尽可能地按面额从大到小找钱即可解决。

解答：


/*
《算法笔记》codeup 100000584 问题 G: 找零钱
*/

#include &lt;cstdio&gt;
using namespace std;

int main() {
    int amount;                                         // 总额
    int denomination[5] = {50, 20, 10, 5, 1};      ]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup 100000584 问题 F: 迷瘴 （详细注释）]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/108120146</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/108120146</guid><author>Zen_Ivan</author><pubDate>Thu, 20 Aug 2020 11:35:23 +0800</pubDate><description><![CDATA[思路：

这道题和D那道修墙的题目差不多，对药水浓度进行从小到大的排序，依次取浓度最小的药水加入，知道达到或超过目标浓度。

解答：


/*
《算法笔记》codeup 100000584 问题 F: 迷瘴
*/

#include &lt;cstdio&gt;
#include &lt;algorithm&gt;
#include &lt;cmath&gt;
using namespace std;

int main() {
    int test_num;
    while(scanf("%d",]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup 100000584 问题 D: Repair the Wall]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/108034833</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/108034833</guid><author>Zen_Ivan</author><pubDate>Sun, 16 Aug 2020 12:46:48 +0800</pubDate><description><![CDATA[思路：

每次用最长的砖，累加的长度超过窟窿的长度就算成功，输出用了的砖数；如果用完所有的砖后，累加的长度仍未达到窟窿的长度则输出“impossible”。

解答：


/*
《算法笔记》codeup 100000584 问题 D: Repair the Wall
*/

#include &lt;cstdio&gt;
#include &lt;algorithm&gt;
using namespace std;

int cmp(int a, int b) {
    return a &gt; b;
]]></description><category></category></item><item><title><![CDATA[vscode 添加了头文件仍显示“未定义的标识符”]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/108034331</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/108034331</guid><author>Zen_Ivan</author><pubDate>Sun, 16 Aug 2020 11:50:28 +0800</pubDate><description><![CDATA[解决方法：在头文件语句下面添加一行


using namespace std;


]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup_100000584 问题 B: 出租车费]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/107734763</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/107734763</guid><author>Zen_Ivan</author><pubDate>Sat, 01 Aug 2020 18:44:08 +0800</pubDate><description><![CDATA[思路：

这题主要还是一个数学问题。所有方案中单位路费最低的情况是搭完阶段一和阶段二，平均每公里2.25元。因此将整段路程分为8公里长的小路程。最后剩下的不足8公里的部分有两种方案，要么重新计费，要么继续上一轮的计费，此后每公里为2.4元。易得这两种方案的车费分别为y = 2.4x和。当x&lt;5时前者车费低，当x=5时两种方案的车费相等，当x&gt;5时后者车费低。

解答：


#include &lt;cstdio&gt;
using namespace std;

const double eps]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup_100000584_A]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/107675936</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/107675936</guid><author>Zen_Ivan</author><pubDate>Wed, 29 Jul 2020 21:39:29 +0800</pubDate><description><![CDATA[思路：

就是书中的区间贪心，不过我觉得对本题中的区间的排序按时间先后比较符合直观，所以排序方法的方向是与书中相反的。

解答：


#include &lt;cstdio&gt;
#include &lt;algorithm&gt;
using namespace std;

const int max_num = 100;

struct show {
    int start_time, end_time;
} show_arr[max_num];                          ]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup 100000583 问题 D: 八皇后 （N皇后代码解析）]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/107144016</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/107144016</guid><author>Zen_Ivan</author><pubDate>Sun, 05 Jul 2020 20:13:25 +0800</pubDate><description><![CDATA[思路：

从棋盘的第一列开始，尝试在当前列的每一行摆放皇后。如果当前在行列上摆放暂时不会引起冲突，则保存摆放的位置。然后进入下一行重复上述操作，直到每一列都完成操作。

解答：


#include &lt;cstdio&gt;
#include &lt;iostream&gt;
#include &lt;cmath&gt; 
#include &lt;algorithm&gt;
using namespace std;

/*
    从棋盘的第一列开始，尝试在当前列的每一行摆放皇后。
    如果当前在]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup_100000583_B]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/107103184</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/107103184</guid><author>Zen_Ivan</author><pubDate>Fri, 03 Jul 2020 12:14:17 +0800</pubDate><description><![CDATA[思路：

输出的每一行分为：空格、一个0、斐波那契数列这三个部分。想清楚每一行空格的数量和斐波那契数列的项数即可。

解答：


#include &lt;cstdio&gt;

using namespace std;

int fib_arr[25];

int Fib(int n) {
    if(n == 1)
        return 1;
    else if(n == 2)
        return 1;
    else
        return(Fib(n - 1) + F]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup_100000583_A]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/107103144</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/107103144</guid><author>Zen_Ivan</author><pubDate>Fri, 03 Jul 2020 12:10:59 +0800</pubDate><description><![CDATA[思路：

一块：只有“吃一块”一种方案。

两块：“两天各吃一块”和“一天吃两块”两种方案。

三块：如果第一天吃一块，则第二天开始回到共有两块的情况；如果第一天吃两块，则第二天回到共有一块的情况。

N块：如果第一天吃一块，则第二天开始回到共有N-1块的情况；如果第一天吃两块，则第二天回到共有N-2块的情况。

解答：


#include &lt;cstdio&gt;

using namespace std;

int get_plan_num(int choco_num) {
    if(choc]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup_100000582_D]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106985886</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106985886</guid><author>Zen_Ivan</author><pubDate>Sat, 27 Jun 2020 18:06:36 +0800</pubDate><description><![CDATA[思路：

思路1：编写一个删除给定字符串中所有给定字符的方法，遍历str2删除str1中的每一个str2元素。

思路2：设置一个大小等于str1的整型数组if_exist，初始化为0。遍历str1，对于str1中的第i个字符遍历str2判断该字符是否存在于str2中，如果存在则置if_exist[i]为1。遍历str1，如果if_exist[i]为0，则输出str1[i]。

思路3：设置一个大小为255的整型数组num，初始化为0，数组下标代表ASCII码，数组元素的值表示当前ASCII码的个数。遍历s]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup_100000582_C]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106974810</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106974810</guid><author>Zen_Ivan</author><pubDate>Fri, 26 Jun 2020 21:12:38 +0800</pubDate><description><![CDATA[思路：

设置一个数组a，a[i]表示数i出现的次数。

解答：


#include &lt;cstdio&gt;
#include &lt;cstring&gt;

using namespace std;

int main() {
    int data_num;
    while(scanf("%d", &amp;data_num) != EOF) {
        // 保存输入的数据
        int data[data_num];
        for(int i = 0; i]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup_100000582_B]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106966581</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106966581</guid><author>Zen_Ivan</author><pubDate>Fri, 26 Jun 2020 10:13:27 +0800</pubDate><description><![CDATA[思路：

设置两个一维数组分别保存数和组号。设置一个二维数组，第一维的下标i表示组号，第二维的下标j表示数的大小，数组的元素值表示第i组的j数的个数，这应用散列的思想。遍历每一组数据完成二维数组的赋值。然后分别对两个一维数组进行排序。最后分别遍历每一个组合不同且数不同的数据，访问这些数据的组号和数作为下标的二维数组元素的值，得到每个不同数据的个数并输出。

解答：


#include &lt;cstdio&gt;
#include &lt;cstring&gt;
#include &lt;algorith]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup_100000582_A]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106929069</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106929069</guid><author>Zen_Ivan</author><pubDate>Tue, 23 Jun 2020 18:05:39 +0800</pubDate><description><![CDATA[思路：

明白输出的含义就容易解出：第一行输出的1是读者1喜欢的2号书另外还有读者3喜欢，第二行输出的BeiJu是读者2喜欢的3号书没有其他人喜欢，第三行输出的1是读者3喜欢的2号书另外还有读者1喜欢，第四行输出的BeiJu是读者4喜欢的1号书另外没有其他人喜欢。

解答：


#include &lt;cstdio&gt;
#include &lt;cstring&gt;
using namespace std;

int main() {
    int reader_num, book_num;

 ]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup_100000581_I]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106784304</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106784304</guid><author>Zen_Ivan</author><pubDate>Tue, 16 Jun 2020 11:47:53 +0800</pubDate><description><![CDATA[思路：

计算好每个人的分数后按题目要求排序即可。

解答：


#include &lt;cstdio&gt;
#include &lt;algorithm&gt;
#include &lt;iostream&gt;
#include &lt;cstring&gt;
using namespace std;

struct stu
{
    char id[25];
    int score = 0;
};

bool cmp(stu a, stu b) {
    if(a.score == b.s]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup_100000581_H]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106780047</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106780047</guid><author>Zen_Ivan</author><pubDate>Tue, 16 Jun 2020 08:45:33 +0800</pubDate><description><![CDATA[思路：

对输入数组进行默认排序，反向扫描并输出奇数，然后正向扫描并输出偶数。

解答：


#include &lt;cstdio&gt;
#include &lt;algorithm&gt;
using namespace std;

int main() {
    int arr[10];
    while(scanf("%d %d %d %d %d %d %d %d %d %d", &amp;arr[0], &amp;arr[1], &amp;arr[2], &amp;arr[3], &amp;]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup_100000581_G]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106771744</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106771744</guid><author>Zen_Ivan</author><pubDate>Mon, 15 Jun 2020 21:31:43 +0800</pubDate><description><![CDATA[思路：

按题目要求模拟即可，注意元素个数为偶数时中间两个数的下标的表达式。

解答：


#include &lt;cstdio&gt;
#include &lt;algorithm&gt;
using namespace std;

int main() {
    int num;
    while (1) {
        scanf("%d", &amp;num);
        if(num == 0)
            break;

        int arr[num];
 ]]></description><category></category></item><item><title><![CDATA[《算法笔记》codeup_100000581_F]]></title><link>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106768525</link><guid>https://blog.youkuaiyun.com/Zen_Ivan/article/details/106768525</guid><author>Zen_Ivan</author><pubDate>Mon, 15 Jun 2020 18:07:41 +0800</pubDate><description><![CDATA[思路：

使用sort()

解答：


#include &lt;cstdio&gt;
#include &lt;algorithm&gt;
using namespace std;

struct mouse
{
    int weight;
    char color[10];
};

bool cmp(mouse a, mouse b) {
    return a.weight &gt; b.weight;
}

int main() {
    int mouse_num;
    whil]]></description><category></category></item></channel></rss>