Interview Check If n Is A Perfect Square

本文介绍了一种使用加法或减法操作判断一个给定数字是否为完全平方数的方法。通过观察完全平方数间的规律,即相邻完全平方数之间的差构成递增的奇数序列,可以实现这一判断。
部署运行你感兴趣的模型镜像

Check if a given number is a perfect square with only addition or substraction operation.

eg. 25 returns true; 19 returns false.

Perfect square number 有一个特性,比如0,1,4,9,16,25 他们之间的间隔分别是1,3,5,7,9,每次间隔都是i+2.

所以每次往下减i, i 更新成i+2. 看最后结果是否为0即可。

import java.util.*;
public class isPerfectSquare{
	public static void main(String [] args){
		int num1 = 0;
		int num2 = 1;
		int num3 = 25;
		int num4 = 19;
		System.out.println(isPerfectSquare(num1));
		System.out.println(isPerfectSquare(num2));
		System.out.println(isPerfectSquare(num3));
		System.out.println(isPerfectSquare(num4));
	}
	private static boolean isPerfectSquare(int n){
		//1,4,9,16,25
		//1+3+5+7+9
		if(n<0){
			return false;
		}
		int i = 1;
		while(n>0){
			n-=i;
			i+=2;	
		}
		if(n == 0){
			return true;
		}else{
			return false;
		}		
	}
}


您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

以下是一个 Python 代码,用于找出句子 `"This is a common interview question"` 中出现频率最高的字符(忽略大小写和空格): ```python def most_frequent_char(sentence): # 将字符串转换为小写,并去除空格 cleaned_sentence = sentence.lower().replace(' ', '') # 使用字典统计每个字符的出现次数 char_count = {} for char in cleaned_sentence: if char.isalpha(): # 只统计字母,排除标点等非字母字符 char_count[char] = char_count.get(char, 0) + 1 # 找出出现次数最多的字符 most_frequent = max(char_count, key=char_count.get) return most_frequent, char_count[most_frequent] # 输入句子 sentence = "This is a common interview question" # 调用函数 char, freq = most_frequent_char(sentence) print(f"出现频率最高的字符是: '{char}', 出现了 {freq} 次") ``` ### 解释: - `sentence.lower()`:将整个句子转为小写,避免大小写被视为不同字符。 - `.replace(' ', '')`:去除空格,因为我们通常不关心空格的频率。 - `char.isalpha()`:确保只统计字母,忽略可能存在的标点符号。 - `char_count.get(char, 0)`:安全地获取字符计数,若不存在则返回 0。 - `max(char_count, key=char_count.get)`:根据字典的值(即频率)找到键(字符)中频率最高的。 运行结果示例: ``` 出现频率最高的字符是: 'i', 出现了 5 次 ``` 注意:在这个句子中,字符 `'i'` 和 `'n'` 都出现了多次。此代码返回的是第一个达到最大频率的字符。如果有多个字符频率相同且最高,而你想全部列出,可以进一步扩展。 --- 如果你想返回所有频率最高的字符(比如并列第一),可以使用下面这个增强版本: ```python from collections import Counter def most_frequent_chars_v2(sentence): # 清理输入:小写、去空格、只保留字母 cleaned = [char for char in sentence.lower() if char.isalpha()] # 使用 Counter 统计频率 counter = Counter(cleaned) # 找到最大频率 max_freq = max(counter.values()) # 获取所有具有最大频率的字符 most_frequent_chars = [char for char, freq in counter.items() if freq == max_freq] return most_frequent_chars, max_freq # 使用 sentence = "This is a common interview question" chars, freq = most_frequent_chars_v2(sentence) print(f"出现频率最高的字符有: {chars}, 每个都出现了 {freq} 次") ``` 输出可能是: ``` 出现频率最高的字符有: ['i'], 每个都出现了 5 次 ``` (注:在该句中 `'i'` 确实以 5 次领先,`n` 和 `o` 是 4 次) ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值