算法笔试模拟题精解之“朋友一生一起走”

简介: 根据题意可以得出,在不考虑数字范围的情况下,相加等于 k 的数总共有 k/2 对(如果 k 为偶数,应为 k/2-1 对,此处以 k/2 为例)。也就是说,如果 n 的值大于 k 的值,那么 k 的所有数对都符合条件,即 1-n 中一共有 k/2 对好朋友。

在线编程介绍

阿里云开发者社区在线编程产品,针对广大开发者学习、实践、面试、应聘、考试认证等打造的免费在线刷题神器。题库来自笔试模拟题、算法大赛模拟题等,界面整洁明了,操作简单,为用户营造专心答题的学习环境。点击链接开始体验:https://developer.aliyun.com/coding

本文为大家介绍其中的 第52题:朋友一生一起走 的题目解析,具体如下:

题目描述

题目等级:容易
知识点:数学

查看题目:朋友一生一起走
Tom想从n个数(1<=n<=1e14)中把“好朋友”挑出来,“好朋友”的定义是相加等于k(1<=k<=1e14),其中(1,2)和(2,1)算一对,请你帮Tom计算一下1-n中一共有多少对好朋友?
输入数字总数n和“好朋友”数的和k;
输出1-n中的好朋友有多少对。
示例1
输入:
3
5
输出:
1

解题方法

根据题意可以得出,在不考虑数字范围的情况下,相加等于 k 的数总共有 k/2 对(如果 k 为偶数,应为 k/2-1 对,此处以 k/2 为例)。也就是说,如果 n 的值大于 k 的值,那么 k 的所有数对都符合条件,即 1-n 中一共有 k/2 对好朋友。

如果 n 的值小于等于 k,那么 k 的有些数对会超出 n 的范围,需要舍弃。

根据n的范围限制,可以计算得出,需要舍弃掉的对数为(k-n-1), 即此时一共有 k/2 -(k-n-1)对好朋友,若计算出此数为负值,即好朋友的对数为0。

时间复杂度:O(1)
空间复杂度:O(1)

看完之后是不是有了想法了呢,快来练练手吧>>查看题目:朋友一生一起走

720-150.png

相关文章
|
7月前
|
算法 搜索推荐 Java
Java数据结构 -- 常见算法分析(查找算法、排序算法)精解详解!!!
Java数据结构 -- 常见算法分析(查找算法、排序算法)精解详解!!!
64 0
|
7月前
|
编解码 算法 前端开发
往年 | 大疆雷达算法校招笔试题目解析
往年 | 大疆雷达算法校招笔试题目解析
494 1
|
算法
压缩算法 【腾讯2020校园招聘-后台&综合-第一次笔试 】
压缩算法 【腾讯2020校园招聘-后台&综合-第一次笔试 】
88 0
|
算法 网络协议
骚戴独家笔试---算法篇4
骚戴独家笔试---算法篇4
64 1
|
存储 算法
骚戴独家笔试---算法篇3
骚戴独家笔试---算法篇3
205 0
骚戴独家笔试---算法篇3
|
搜索推荐
7大排序算法-- 堆排 快速排序 --精解(下)
7大排序算法-- 堆排 快速排序 --精解(下)
86 0
|
搜索推荐
7大排序算法-- 堆排 快速排序 --精解(上)
7大排序算法-- 堆排 快速排序 --精解
54 0
|
搜索推荐 算法
7大排序算法-- 直接插入,希尔,冒泡,选择 --精解(下)
7大排序算法-- 直接插入,希尔,冒泡,选择 --精解(下)
134 0
|
存储 搜索推荐
7大排序算法-- 直接插入,希尔,冒泡,选择 --精解(上)
7大排序算法-- 直接插入,希尔,冒泡,选择 --精解
85 0
|
算法 Serverless 测试技术
骚戴独家笔试---算法篇5
骚戴独家笔试---算法篇5
59 0