领扣编程题

题目一

给定两个排序后的数组 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;
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值