
获得徽章 0
#每日一题# 查找一个数组中第K大的数的查找算法。
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数数组(以空格分隔):");
String[] strArr = scanner.nextLine().split(" ");
int[] intArr = new int[strArr.length];
for (int i = 0; i < strArr.length; i++) {
intArr[i] = Integer.parseInt(strArr[i]);
}
System.out.println("请输入K:");
int k = scanner.nextInt();
int result = findKthLargest(intArr, k);
System.out.println("数组中第" + k + "大的数为:" + result);
}
public static int findKthLargest(int[] nums, int k) {
Arrays.sort(nums);
return nums[nums.length - k];
}
}
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个整数数组(以空格分隔):");
String[] strArr = scanner.nextLine().split(" ");
int[] intArr = new int[strArr.length];
for (int i = 0; i < strArr.length; i++) {
intArr[i] = Integer.parseInt(strArr[i]);
}
System.out.println("请输入K:");
int k = scanner.nextInt();
int result = findKthLargest(intArr, k);
System.out.println("数组中第" + k + "大的数为:" + result);
}
public static int findKthLargest(int[] nums, int k) {
Arrays.sort(nums);
return nums[nums.length - k];
}
}
展开
评论
点赞
#每日一题# 写一个Java程序,输入一个整数n,输出从1到n的所有整数中,只包含数字1和0的数的个数。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int count = 0;
for (int i = 1; i <= n; i++) {
String str = String.valueOf(i);
if (str.matches("[01]+")) {
count++;
}
}
System.out.println(count);
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int count = 0;
for (int i = 1; i <= n; i++) {
String str = String.valueOf(i);
if (str.matches("[01]+")) {
count++;
}
}
System.out.println(count);
}
}
展开
评论
点赞
#每日一题# 使用冒泡排序算法对一个整型数组进行升序排序,并输出排序后的数组。
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {5, 3, 8, 6, 4};
bubbleSort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
public static void bubbleSort(int[] arr) {
int temp = 0;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {5, 3, 8, 6, 4};
bubbleSort(arr);
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
public static void bubbleSort(int[] arr) {
int temp = 0;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
展开
评论
点赞
#每日一题# 读入一个整数 n,计算从 1 到 n 中所有奇数的和,并将结果输出。
输入10,输出25
import java.util.Scanner;
public class SumOfOddNumbers {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int sum = 0;
for (int i = 1; i <= n; i++) {
if (i % 2 == 1) {
sum += i;
}
}
System.out.println(sum);
}
}
输入10,输出25
import java.util.Scanner;
public class SumOfOddNumbers {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int sum = 0;
for (int i = 1; i <= n; i++) {
if (i % 2 == 1) {
sum += i;
}
}
System.out.println(sum);
}
}
展开
评论
点赞
#每日一题# 编写一个Java程序来查找整数数组中的第二大数字。
输入:[10,20,30,40,50]
输出:40
public class SecondLargestNumber {
public static void main(String[] args) {
int[] arr = {10, 20, 30, 40, 50};
int largest = arr[0];
int secondLargest = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > largest) {
secondLargest = largest;
largest = arr[i];
} else if (arr[i] > secondLargest && arr[i] != largest) {
secondLargest = arr[i];
}
}
System.out.println("Second largest number is: " + secondLargest);
}
}
输入:[10,20,30,40,50]
输出:40
public class SecondLargestNumber {
public static void main(String[] args) {
int[] arr = {10, 20, 30, 40, 50};
int largest = arr[0];
int secondLargest = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > largest) {
secondLargest = largest;
largest = arr[i];
} else if (arr[i] > secondLargest && arr[i] != largest) {
secondLargest = arr[i];
}
}
System.out.println("Second largest number is: " + secondLargest);
}
}
展开
评论
点赞
#每日一题# 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
例:"abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
class Solution {
public int lengthOfLongestSubstring(String s) {
if (s == null || s.length() == 0) {
return 0;
}
int left = 0, right = 0, n = s.length(), maxLen = 0;
Set<Character> lookup = new HashSet<>();
while (right < n) {
if (!lookup.contains(s.charAt(right))) {
lookup.add(s.charAt(right));
right++;
maxLen = Math.max(maxLen, lookup.size());
} else {
lookup.remove(s.charAt(left));
left++;
}
}
return maxLen;
}
}
例:"abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
class Solution {
public int lengthOfLongestSubstring(String s) {
if (s == null || s.length() == 0) {
return 0;
}
int left = 0, right = 0, n = s.length(), maxLen = 0;
Set<Character> lookup = new HashSet<>();
while (right < n) {
if (!lookup.contains(s.charAt(right))) {
lookup.add(s.charAt(right));
right++;
maxLen = Math.max(maxLen, lookup.size());
} else {
lookup.remove(s.charAt(left));
left++;
}
}
return maxLen;
}
}
展开
评论
点赞
#每日一题# 需要实现一个函数,接收一个字符串作为参数,返回一个布尔值,表示该字符串是否是回文字符串。
回文字符串的定义是,正着读和倒着读都一样,比如 "level" 或者 "noon"。
使用双指针或数组的 reverse 方法:
回文字符串的定义是,正着读和倒着读都一样,比如 "level" 或者 "noon"。
使用双指针或数组的 reverse 方法:
展开
评论
点赞
#每日一题# 实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1,因此如果输入 9,该函数输出 2。
public class Solution {
public int NumberOf1(int n) {
int count = 0;
while (n != 0) {
count++;
n = n & (n - 1);
}
return count;
}
}
此题可以使用位运算的技巧来解决。我们可以用一个计数器 count 来记录 1 的个数,然后用 n & (n-1) 将 n 的二进制表示中最右边的 1 变成 0,每次这样操作都会使 count 加 1,直到 n 变成 0。
例如,当 n = 9 = 0b1001 时,我们有:
n & (n - 1) = 0b1001 & 0b1000 = 0b1000
n & (n - 1) = 0b1000 & 0b0111 = 0b0000
此时n=0,count=2
public class Solution {
public int NumberOf1(int n) {
int count = 0;
while (n != 0) {
count++;
n = n & (n - 1);
}
return count;
}
}
此题可以使用位运算的技巧来解决。我们可以用一个计数器 count 来记录 1 的个数,然后用 n & (n-1) 将 n 的二进制表示中最右边的 1 变成 0,每次这样操作都会使 count 加 1,直到 n 变成 0。
例如,当 n = 9 = 0b1001 时,我们有:
n & (n - 1) = 0b1001 & 0b1000 = 0b1000
n & (n - 1) = 0b1000 & 0b0111 = 0b0000
此时n=0,count=2
展开
评论
点赞
#每日一题# 给定阵列[-2,1,-3,4,-1,2,1、-5,4],任何相邻子阵列的最大和为6,这对应于子阵列[4,-1,2,1]。
Kadane算法在JavaScript中的示例实现:
function maxSubarraySum(arr) {
let maxEndingHere = 0;
let maxSoFar = 0;
for (let i = 0; i < arr.length; i++) {
maxEndingHere = Math.max(maxEndingHere + arr[i], 0);
maxSoFar = Math.max(maxSoFar, maxEndingHere);
}
return maxSoFar;
}
const arr = [-2, 1, -3, 4, -1, 2, 1, -5, 4];
const maxSum = maxSubarraySum(arr);
console.log(maxSum); // Output: 6
Kadane算法在JavaScript中的示例实现:
function maxSubarraySum(arr) {
let maxEndingHere = 0;
let maxSoFar = 0;
for (let i = 0; i < arr.length; i++) {
maxEndingHere = Math.max(maxEndingHere + arr[i], 0);
maxSoFar = Math.max(maxSoFar, maxEndingHere);
}
return maxSoFar;
}
const arr = [-2, 1, -3, 4, -1, 2, 1, -5, 4];
const maxSum = maxSubarraySum(arr);
console.log(maxSum); // Output: 6
展开
评论
2
赞了这篇沸点