当前位置: 首页 > news >正文

做淘宝主页网站/宁德市区哪里好玩

做淘宝主页网站,宁德市区哪里好玩,它是企业整体,网站设计工作室☘前言☘ 今天是九日集训第六天,我会记录一下学习内容和题解,争当课代表0.0. 链接:《LeetCode零基础指南》(第七讲) 贪心 🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人 ✨联系方式:220189…

请添加图片描述

☘前言☘

今天是九日集训第六天,我会记录一下学习内容和题解,争当课代表0.0.
链接:《LeetCode零基础指南》(第七讲) 贪心

🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人
✨联系方式:2201891280(QQ)
全文大约阅读时间: 20min


全文目录

  • ☘前言☘
  • 🎁主要知识点梳理
    • 📝1.贪心算法
  • 🍗课后习题
    • 1913. 两个数对之间的最大乘积差
    • 976. 三角形的最大周长
    • 561. 数组拆分 I
    • 881. 救生艇
    • 324. 摆动排序 II
    • 455. 分发饼干
    • 1827. 最少操作使数组递增
    • 945. 使数组唯一的最小增量
    • 945. 使数组唯一的最小增量
    • 611. 有效三角形的个数


🎁主要知识点梳理

📝1.贪心算法

所谓贪心就是总是做出**当前状态看来最好的选择。**也就是不从整体上最优考虑,只从局部最优解来考虑,最终达到全局最优。
比如:对于一个全是正整数的数组,我要找到其中两个数,使得他们的乘积最大,毫无疑问,一定是取最大和次大的两个数据相乘,得到结果最大。


🍗课后习题

1913. 两个数对之间的最大乘积差

1913. 两个数对之间的最大乘积差

题目描述

两个数对 (a, b) 和 (c, d) 之间的 乘积差 定义为 (a * b) - (c * d) 。

  • 例如,(5, 6) 和 (2, 7) 之间的乘积差是 (5 * 6) - (2 * 7) = 16 。

给你一个整数数组 nums ,选出四个 不同的 下标 w、x、y 和 z ,使数对 (nums[w], nums[x]) 和 (nums[y], nums[z]) 之间的 乘积差 取到 最大值 。
返回以这种方式取得的乘积差中的 最大值 。

思路

其实就是例子中的方法,但是也不需要去排序,找最大和次大值我给一个通用的方式,减少复杂度0.0

int maxProductDifference(int* nums, int numsSize){int max1 = 1, max2 = 1, min1 = 1e4, min2 = 1e4;for(int i = 0;i < numsSize;i++){if(nums[i] > max1){max2 = max1; max1 = nums[i];}else if(nums[i] > max2) max2 = nums[i];//防止一开始就是最大值if(nums[i] < min1){min2 = min1; min1 = nums[i];}else if(nums[i] < min2) min2 = nums[i];//防止一开始就是最小值}return max1 * max2 - min1 * min2;
}

976. 三角形的最大周长

976. 三角形的最大周长

题目描述

给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。
如果不能形成任何面积不为零的三角形,返回 0。

思路

先排序,然后从后往前找第一个满足条件的解就好了

int cmp(int *a,int *b){return *a > *b;}
int largestPerimeter(int* nums, int numsSize){qsort(nums,numsSize,sizeof(int),cmp);int i;for(i = numsSize - 1;i > 1;i--){if(nums[i] < nums[i-1] + nums[i - 2])   break;}if(i == 1) return 0;else return nums[i] + nums[i - 1] + nums[i-2];
}

561. 数组拆分 I

561. 数组拆分 I

题目描述

给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。
返回该 最大总和 。

思路

先排序,然后就是两两组合 其实就是输出偶数下标的数组元素和。

int cmp(int *a, int *b){return *a > *b ? 1 : -1;}
int arrayPairSum(int* nums, int numsSize){int ans = 0;qsort(nums, numsSize, sizeof(int), cmp);for(int i = 0;i < numsSize; i+=2)ans += nums[i];return ans;
}

881. 救生艇

881. 救生艇

题目描述

给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。
返回该 最大总和 。

思路

看昨天的题解:【解题报告】《LeetCode零基础指南》(第六讲) C排序API


324. 摆动排序 II

324. 摆动排序 II

题目描述

给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。
你可以假设所有输入数组都可以得到满足题目要求的结果。

思路

先排序,然后把小元素倒序插入到0 2 4 等偶数位置。大元素倒序插入1 3 5奇数位置就好了。

int cmp(int *a, int *b){return *a > *b ? 1 : -1;}
void wiggleSort(int* nums, int numsSize){int ans[numsSize];for(int i = 0; i < numsSize;i++)	//复制数组ans[i] = nums[i];qsort(ans, numsSize, sizeof(int), cmp);int ansnum = (numsSize + 1)/2-1;for(int i = 0;i < numsSize; i+=2)//倒序插入nums[i] = ans[ansnum--];ansnum = numsSize - 1;for(int i = 1;i < numsSize; i+=2)//倒序插入nums[i] = ans[ansnum--];
}

455. 分发饼干

455. 分发饼干

题目描述

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。
对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

思路

这就是田忌赛马的思想,用最小的饼干满足对应的人,就可以得到最大的数量。

int cmp(int *a, int *b){return *a > *b ? 1 : -1;}
int findContentChildren(int* g, int gSize, int* s, int sSize){qsort(g, gSize, sizeof(int), cmp);qsort(s, sSize, sizeof(int), cmp);int numOfChildren = gSize, numOfCookies = sSize, ans = 0;for(int i = 0,j = 0;i < numOfChildren && j < numOfCookies;i++,j++){while(j < numOfCookies && g[i] > s[j])  j++;if(j < numOfCookies)    ans++;}return ans;
}

1827. 最少操作使数组递增

1827. 最少操作使数组递增

题目描述

给你一个整数数组 nums (下标从 0 开始)。每一次操作中,你可以选择数组中一个元素,并将它增加 1 。

  • 比方说,如果 nums = [1,2,3] ,你可以选择增加 nums[1] 得到 nums = [1,3,3] 。
    请你返回使 nums 严格递增 的 最少 操作次数。

我们称数组 nums 是 严格递增的 ,当它满足对于所有的 0 <= i < nums.length - 1 都有 nums[i] < nums[i+1] 。一个长度为 1 的数组是严格递增的一种特殊情况。

思路

如果后面的比前面的小就把它变成前面的数字加1就好了

int minOperations(int* nums, int numsSize){int ans = 0;for(int i = 1;i < numsSize;i++)if(nums[i] <= nums[i - 1])   ans+= nums[i-1]+1 - nums[i],nums[i] = nums[i - 1] +1;return ans;
}

945. 使数组唯一的最小增量

945. 使数组唯一的最小增量

题目描述

给你一个整数数组 nums 。每次 move 操作将会选择任意一个满足 0 <= i < nums.length 的下标 i,并将 nums[i] 递增 1。
返回使 nums 中的每个值都变成唯一的所需要的最少操作次数。

思路

排完序之后和上面那道题一毛一样。。。

int cmp(int *a, int *b){return *a > *b ? 1 : -1;}
int minIncrementForUnique(int* nums, int numsSize){qsort(nums,numsSize,sizeof(int),cmp);int ans = 0;for(int i = 1;i < numsSize;i++)if(nums[i] <= nums[i - 1])   ans+= nums[i-1]+1 - nums[i],nums[i] = nums[i - 1] +1;return ans;
}

945. 使数组唯一的最小增量

945. 使数组唯一的最小增量

题目描述

给你一个整数数组 nums 。每次 move 操作将会选择任意一个满足 0 <= i < nums.length 的下标 i,并将 nums[i] 递增 1。
返回使 nums 中的每个值都变成唯一的所需要的最少操作次数。

思路

排完序之后和上面那道题一毛一样。。。

int cmp(int *a, int *b){return *a > *b ? 1 : -1;}
int minIncrementForUnique(int* nums, int numsSize){qsort(nums,numsSize,sizeof(int),cmp);int ans = 0;for(int i = 1;i < numsSize;i++)if(nums[i] <= nums[i - 1])   ans+= nums[i-1]+1 - nums[i],nums[i] = nums[i - 1] +1;return ans;
}

611. 有效三角形的个数

611. 有效三角形的个数

题目描述

给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。

思路

听说有人过不去这题0.0,主要问题是需要不让指针回溯。啥意思呢?就是在i不变j增长的时候,k的值绝对不会比上次的结果小。
需要注意k-j可能是个0.。。。然后就好了

int cmp(int *a,int *b){return *a > *b ? 1 : -1;}
int triangleNumber(int* nums, int numsSize){int ans = 0;qsort(nums,numsSize,sizeof(int),cmp);for(int i = 0;i < numsSize - 2;i++){int k = i + 1;for (int j = i + 1;nums[j] && j < numsSize - 1; ++j) {while (k + 1 < numsSize && nums[k + 1] < nums[i] + nums[j]) {++k;}ans += (k - j) > 0 ? (k - j) : 0;}}return ans;
}

📑写在最后
今天完成了第六天的打卡,最近被六级支配,我要鸽几天,没意见吧。只有必要的会更新,自定义打卡每天需要至少四小时,太久了,考完六级我肯定更新-.-

http://www.jmfq.cn/news/5009437.html

相关文章:

  • 黄骅港站/企业网络的组网方案
  • 建立网站/什么叫做网络营销
  • 做海外房产最好的网站/万网域名官网
  • 织梦网站地图调用全站文章/中国seo第一人
  • 幸福宝推广app网站入口/怎样在百度上做广告
  • 网站文章伪原创怎么做/网站访问量排行榜
  • 在家怎么利用电脑赚钱/宁波seo博客
  • bing 提交网站/电商运营怎么自学
  • ps软件免费下载安装/重庆做seo外包的
  • 郑州微信网站制作/如何网页优化
  • 番禺网站推广/河源市企业网站seo价格
  • 做网站自己申请域名还是建站公司/太原网站推广公司
  • 网站做edi认证有用没/百度文库官网登录入口
  • 太原靠谱的网站制作/百度号码认证平台首页
  • 公司付的网站费怎么做分录/如何宣传推广自己的店铺
  • 保健品网站建设策划书/北京口碑最好的it培训机构
  • 临湘网站建设/营销策划方案案例范文
  • 肇庆软件建网站公司/潮州网络推广
  • seo网站建设哪家专业/友情链接也称为
  • 网站模板内容怎么改/厦门seo关键词优化代运营
  • 网站建设网站排名怎么做/石家庄网络推广优化
  • 浙江省建设厅网站 学时/营销宣传方案
  • 怎么用asp做网站/人力资源短期培训班
  • 加强政府门户网站建设/seo是什么字
  • 做服务型党员网站/沈阳seo博客
  • 劳务网站怎样做/怎么建立一个网站
  • 大企业网站建设多少钱/百度收录提交网站后多久收录
  • 高端网站建设济南兴田德润简介电话/磁力屋torrentkitty
  • 不会编程如何做自己的网站/宁德seo
  • 想美团这样的网站怎么做的/近期国内新闻