123
返回列表 发新帖
楼主: david_smith
跳转到指定楼层
上一主题 下一主题
收起左侧

[其他] 编程小技巧 Clean Code in Java

 
🔗
 楼主| david_smith 2021-10-15 22:23:54 | 只看该作者
全局:
LeetCode 644, nums[] 是一个Int 数组
  1. double[] transformedNums = new double[nums.length];
  2. for (int i = 0;  i < nums.length; i++) {
  3.         transformedNums[i] = nums[i] - threshold;
  4. }
复制代码
一行代替For Loop
  1. double[] transformedNums = Arrays.stream(nums).mapToDouble(a -> a - threshold).toArray();
复制代码
回复

使用道具 举报

🔗
 楼主| david_smith 2021-10-18 07:13:52 | 只看该作者
全局:
本帖最后由 david_smith 于 2021-10-17 18:21 编辑

给一个数组,求他的前缀和

比如 int[] a = {1,2,3,4,5} 你需要另一个数组 int[] prefixSum = {1,3,6,10,15};
prefixSum [i]= a[0] + a[1] + ... + a

LeetCode 上很多高频题都要用到
传统写法:
  1. prefixSum[0] = a[0];
  2. for(int i = 1; i < a.length; i++) {
  3.        prefixSum[i] = a[i] + prefixSum[i - 1];
  4. }
复制代码
简洁写法: 不过parallelPrefix不是很常见,也很难从名字看出是什么意思,所以需要加注释 或者向面试官解释,这个函数的作用。
  1. int[] prefixSum = a.clone();
  2. Arrays.parallelPrefix(prefixSum, Integer::sum);
复制代码

[/i]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表