🌍编程能力第四天
🍀循环
题目链接:
T1:1822. 数组元素积的符号
T2:1502. 判断能否形成等差数列
T3:202. 快乐数
T4:1790. 仅执行一次字符串交换能否使两个字符串相等
T1:数组元素积的符号
📚题目详情
💡解题思路一
将数组所有数相乘然后判断正负。
注意:需要考虑mul的范围,由题可知最大数据范围是100的1000次方,所以需要将数据类型定义为double。
🔑源代码一
class Solution {
public int arraySign(int[] nums) {
double mul=1;
for(int i=0;i<nums.length;i++){
mul *= nums[i];
}
if(mul>0){
return 1;
}else if(mul<0){
return -1;
}
return 0;
}
}
💡解题思路二(推荐)
遍历数组有以下场景
- 遇到0,直接返回
- 小于0,结果乘之
🔑源代码二
class Solution {
public int arraySign(int[] nums) {
int sign = 1;
for (int n : nums) {
if (n == 0) {
return 0;
}
if (n < 0) {
sign *= -1;
}
}
return sign;
}
}
T2:判断能否形成等差数列
📚题目详情
💡解题思路一
按照等差数列的定义去求解,等差数列至少要有三项,望知晓。
用前一项减后一项去求差d,然后逐个比较是否所有前一项减后一项的差相等。
🔑源代码一
class Solution {
public boolean canMakeArithmeticProgression(int[] arr) {
int sum = 0;
Arrays.sort(arr);
for (int i = arr.length - 1; i >= 2; i--) {
if (arr[i] - arr[i - 1] == arr[i - 1] - arr[i - 2]) {
sum++;
}
}
if (sum == arr.length - 2) {
return true;
}
return false;
}
}
💡解题思路二(推荐)
🔑源代码二
class Solution {
public boolean canMakeArithmeticProgression(int[] arr) {
Arrays.sort(arr);
for (int i = 1; i < arr.length - 1; ++i) {
if (arr[i] * 2 != arr[i - 1] + arr[i + 1]) {
return false;
}
}
return true;
}
}
T3: 快乐数(好题)
📚题目详情
💡解题思路
详情请见:LeetCode题解
🔑源代码
class Solution {
private int getNext(int n) {
int totalSum = 0;
while (n > 0) {
int d = n % 10;
n = n / 10;
totalSum += d * d;
}
return totalSum;
}
public boolean isHappy(int n) {
Set<Integer> seen = new HashSet<>();
while (n != 1 && !seen.contains(n)) {
seen.add(n);
n = getNext(n);
}
return n == 1;
}
}
T4:仅执行一次字符串交换能否使两个字符串相等(好题)
📚题目详情
💡解题思路
🔑源代码
class Solution {
public boolean areAlmostEqual(String s1, String s2) {
int cnt = 0;
int len = s1.length();
int[] map = new int[26];
char[] chas1 = s1.toCharArray();
char[] chas2 = s2.toCharArray();
for (char ch : chas1) {
map[ch - 'a']++;
}
for (char ch : chas2) {
if (map[ch - 'a']-- == 0) {//先判断,再--,防止影响后面的判断如“yj”,"yy"如果不--就会影响结果
return false;
}
}
for (int i = 0; i < len; ++i) {
if (chas1[i] != chas2[i]) {
cnt++;
}
}
return cnt <= 2;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/199753.html