这道题非常容易,但是,有一些用法值得我们学习。

题目要求:

求一个数字向量中正数的个数,以及负数的和。

一、解法

fn count_positives_sum_negatives(input: Vec<i32>) -> Vec<i32> {let _up =input.iter().filter(|&x| *x > 0).collect::<Vec<_>>().iter().fold(0, |total, &x| total + x);let _down =input.iter().filter(|&x| *x < 0).collect::<Vec<_>>().iter().fold(0, |total, &x| total + x);vec![_up, _down]
}

我也进行了一些努力,想一步到位,但是没有成功。

如:

//以下是非有效代码 尝试1
fn count_positives_sum_negatives2(input: Vec<i32>) -> Vec<i32> {input.iter().fold((0, 0), |(mut total, mut num), &x| match x > 0 {true => total += 1,_ => num += x,})
}
//以下是非有效代码 尝试2
fn count_positives_sum_negatives2(input: Vec<i32>) -> Vec<i32> {input.iter().fold((0, 0), |mut total, &x| match x > 0 {true => total.0 += 1,_ => total.1 += x,})
}

其实,尝试2有些快接近成功了……

//借鉴了codewars中其它人的解法,可以正确运行
fn count_positives_sum_negatives2(input: Vec<i32>) -> Vec<i32> {input.iter().fold(vec![0, 0], |mut total, &x| {match x > 0 {true => total[0] += 1,_ => total[1] += x,}total})
}

二、codewars精彩的解法
1、

fn count_positives_sum_negatives(input: Vec<i32>) -> Vec<i32> {if input.is_empty() {return vec![];}input.iter().fold(vec![0, 0], |mut acc, &x| {if x > 0 {acc[0] += 1;} else {acc[1] += x;}acc})
}

2、

fn count_positives_sum_negatives(input: Vec<i32>) -> Vec<i32> {if input.len() == 0 {return Vec::new()}input.into_iter().fold([0,0], |mut sum, i| {if i > 0 {sum[0] += 1} else if i < 0 {sum[1] += i}sum}).as_ref().into()
}

Rust: codewars 的Count of positives / sum of negatives相关推荐

  1. [LeetCode]Count of Range Sum

    题目:Count of Range Sum Given an integer array nums, return the number of range sums that lie in [lowe ...

  2. select 1,select *,select count(),select sum(),select null

    select 1 from dual where a >20 查询后返回1列,所返回的列值均为1,返回的行数等于满足条件的行数: 同理, select 常量 from - where -,查询后 ...

  3. SQL难点对比分析:COUNT(IF) 和 SUM(IF)的区别

    COUNT(IF) 和 SUM(IF) 的区别和联系: COUNT(IF xxx, 1, 0):无视条件求和,即统计0或者1的数量(因为不论0还是1,都是不为NULL的值) SUM(xxx, 1, 0 ...

  4. mysql中的count函数和sum函数如果条件不符合返回什么

    1.count函数返回:0 2.sum函数返回:空字符串

  5. MySQL中count方法和sum方法查询条件错误时返回结果

    1.count的结果如下图 2.sum的结果如下: 由图可知,count返回的是0,sum什么都没有返回

  6. avg最多用多少列 mysql_MySQL之聚合数据(AVG,COUNT,MAX,MIN,SUM)

    1.首先我们需要了解下什么是聚合函数 聚合函数aggregation function又称为组函数.认情况下 聚合函数会对当前所在表当做一个组进行统计. 2.聚合函数的特点 1.每个组函数接收一个参数 ...

  7. mysql之count,max,min,sum,avg,celing,floor

    系列文章 mysql之创建数据库,创建数据表 mysql之select,insert,delete,update mysql之group by,order by count 计数,经常和group b ...

  8. java的count函数_SQL count()函数与sum()函数

    count(): COUNT() 函数返回匹配指定条件的行数.SELECT COUNT(column_name) FROM table_name COUNT(column_name) 函数返回指定列的 ...

  9. MySQL笔记2: count() 函数和 sum() 函数用法和区别

  10. 327. Count of Range Sum 区间和的个数

    给定一个整数数组 nums,返回区间和在 [lower, upper] 之间的个数,包含 lower 和 upper. 区间和 S(i, j) 表示在 nums 中,位置从 i 到 j 的元素之和,包 ...

最新文章

  1. 安装phpredis扩展
  2. 【 FPGA 】FIR 滤波器之Single-rate FIR滤波器的系数数据(Filter Coefficient Data)
  3. IKE IPSEC ×××
  4. 童话镇计算机乐谱,童话镇简谱(歌词)-陈一发演唱-桃李醉春风记谱
  5. python如何使用多态_在python 3中,如何将多态应用于类
  6. asp.net将内容导出到Excel,Table表格数据(html)导出EXCEL
  7. 【jackson 异常】com.fasterxml.jackson.databind.JsonMappingException异常处理
  8. matlab阿卡曼公式,阿克曼函数--一个计算方法
  9. 基于python实现细胞自动机
  10. Houdini 地形知识点
  11. 技术架构图-Java技术栈
  12. 高中计算机教室标语,高中教室宣传标语
  13. 引流脚本是什么意思,比邻引流脚本何如多开?
  14. 深入了解Element Form表单动态验证问题
  15. Problem G: 测量湖泊的平均水深
  16. scrapy框架下的豆瓣电影评论爬取以及登录,以及生成词云和柱状图
  17. 什么是RNN?一文看懂强大的循环神经网络(Recurrent Neural Network, RNN)
  18. 有道云笔记中markdown插入本地图片(绝对路径)后无法显示图片问题
  19. U盘数据加密--Bitlocker
  20. FocusBI:租房分析星型模型

热门文章

  1. VB.NET rdlc 报表的使用
  2. 完整版linux下android源码下载、编译、模拟器启动运行
  3. C库函数学习笔记之strcpy
  4. springMVC实现的crud操作
  5. 清除centos上面kde软件的一个脚本,基本好用
  6. 给 Android 应用开发者的十个建议
  7. noi.ac #529 神树的矩阵
  8. vue —— 利用 viewport 进行适配
  9. 400. Nth Digit
  10. Java经典编程题50道之三十二