题目一
给定两个排序后的数组 A 和 B,其中 A 的末端有足够的缓冲空间容纳 B。 编写一个方法,将 B 合并入 A 并排序。
初始化 A 和 B 的元素数量分别为 m 和 n。
示例:
输入:
A = [1,2,3,0,0,0], m = 3
B = [2,5,6], n = 3
输出: [1,2,2,3,5,6]
思路:先将B中数插入A,再对A进行排序
class Solution {
public void merge(int[] A, int m, int[] B, int n) {
int x=0;
for(int i=m;i<(m+n);i++){//先将B中的数插入到A中
A[i]=B[x];
x++;
}
for(int i=0;i<A.length-1;i++){//对A进行排序
for(int j=i+1;j<A.length;j++){
if(A[i]>A[j]){
int t=A[i];
A[i]=A[j];
A[j]=t;
}
}
}
}
}
题目二
给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。
请你统计并返回 grid 中 负数 的数目。
示例 1:
输入:grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]]
输出:8
解释:矩阵中共有 8 个负数。
示例 2:
输入:grid = [[3,2],[1,0]]
输出:0
示例 3:
输入:grid = [[1,-1],[-1,-1]]
输出:3
示例 4:
输入:grid = [[-1]]
输出:1
提示:
m == grid.length
n == grid[i].length
1 <= m, n <= 100
-100 <= grid[i][j] <= 100
思路:对数组进行遍历,判断是否小于0,是就将记录负数的count++;
import java.util.Scanner;
class Solution {
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("请输入数组:");
int[][] matrix= {
{4,3,2,-1},
{3,2,1,-1},
{1,1,-1,-2}
};
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
matrix[i][j]=scanner.nextInt();
}
}
int count = countNegatives(matrix);
System.out.print(count);
}
public static int countNegatives(int[][] matrix) {
int sum=0;
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
if(matrix[i][j]<0){
sum++;
}
}
}
return sum;
}
}
题目三
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
示例 1:
输入: s = "leetcode"
输出: false
示例 2:
输入: s = "abc"
输出: true
限制:
0 <= len(s) <= 100
如果你不使用额外的数据结构,会很加分。
思路:遍历每一个数组中的字母,判断是否有相同的。
import java.util.Scanner;
class Solution {
public static void main(String[] args){
Scanner scanner =new Scanner(System.in);
System.out.print("s = ");
String s=scanner.nextLine();
System.out.print(isUnique(s));
}
public static boolean isUnique(String s) {
for(int i =0;i<s.length();i++){
for(int j=i+1;j<s.length();j++){
if(s.charAt(i)==s.charAt(j)){
return false;
}
}
}
return true;
}
}
题目四
统计一个数字在排序数组中出现的次数。
示例 1:
输入: nums = [5,7,7,8,8,10], target = 8
输出: 2
示例 2:
输入: nums = [5,7,7,8,8,10], target = 6
输出: 0
思路:考虑在数组中是否有输入的数字相同的数,有count++
class Solution {
public int search(int[] nums, int target) {
int count=0;
for(int i=0;i<nums.length;i++){
if(nums[i]==target){
count++;
}
}
return count;
}
}