【力扣/牛客刷题】136. 只出现一次的数字 || 75. 颜色分类 || 215. 数组中的第K个最大元素

本文通过异或运算解决LeetCode的136题,介绍如何找到数组中只出现一次的数字。此外,针对75题的颜色分类问题,展示了使用冒泡排序的方法。同时,对于215题,讨论了避免使用冒泡排序优化找到数组中第K个最大元素的策略。
摘要由CSDN通过智能技术生成

作者:✿✿ xxxflower. ✿✿
博客主页:xxxflower的博客
专栏:【力扣/牛客刷题】篇
语录:⭐每一个不曾起舞的日子,都是对生命的辜负。⭐

题目OJ链接:136. 只出现一次的数字

在这里插入图片描述
【题目分析】这个题我们可以通过异或来求。两个相同的数异或之后为0,让数组中的数全部异或。最后得到的就是单出来的数字。于是我们可以得到以下代码:

class Solution {
    public int singleNumber(int[] nums) {
        int ret = nums[0];
        for(int i = 1;i < nums.length;i++){
            ret ^= nums[i];
        }
        return ret;
    }
} 

在这里插入图片描述
题目OJ链接:75. 颜色分类
在这里插入图片描述
【题目分析】这个题我们本来可以用sort直接解决,但是题目不让用[doge].那我们用冒泡排序法:

class Solution {
    public void sortColors(int[] nums) {
       for(int i = 0;i < nums.length-1;i++){
           for(int j = 0;j < nums.length - i - 1;j++){
               if(nums[j]>nums[j+1]){
                int temp = nums[j];
               nums[j] = nums[j+1];
               nums[j+1] = temp;
               }             
           }
       }      
    }
}

在这里插入图片描述
至于排序,我们后续的学习会遇到。我们将系统学习排序有关的内容。

题目OJ链接:215. 数组中的第K个最大元素
在这里插入图片描述
【题目分析】我首先想到的是用冒泡排序法将数组排序,然后在返回第k个值。但是尝试了之后,发现冒泡排序法的时间复杂度过高。只能先用Arrays.sort(nums);(此题也是排序有关的问题,以后学完了排序会返回来重新写这个题。)
在这里插入图片描述

class Solution {
    public int findKthLargest(int[] nums, int k) {
        Arrays.sort(nums);
        return nums[nums.length - k];
    }
}

在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xxxflower.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值