前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >442 数组中重复的数据

442 数组中重复的数据

作者头像
编程张无忌
发布于 2021-06-01 14:14:26
发布于 2021-06-01 14:14:26
5.3K00
代码可运行
举报
文章被收录于专栏:悟道悟道
运行总次数:0
代码可运行

给定一个整数数组 a,其中1 ≤ a[i] ≤ n (n为数组长度), 其中有些元素出现两次而其他元素出现一次。 找到所有出现两次的元素。 你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗? 示例: 输入: [4,3,2,7,8,2,3,1] 输出: [2,3]

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public List<Integer> findDuplicates(int[] nums) {

        List<Integer> list=new ArrayList();
        for(int i=0;i<nums.length;i++){
            int index=Math.abs(nums[i])-1;//-1防止数组越界 因为他是1-n 而n为数组长度
            //如果他小于0,说明出现过
            if(nums[index]<0){
                list.add(Math.abs(nums[i]));
            }else{
                //否则让他* -1 <0
                nums[index]*=-1;
            }
        }   
        return list;

    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
深入理解 kernel panic 的流程
我们在项目开发过程中,很多时候会出现由于某种原因经常会导致手机系统死机重启的情况(重启分Android重启跟kernel重启,而我们这里只讨论kernel重启也就是 kernel panic 的情况),死机重启基本算是影响最严重的系统问题了,有稳定复现的,也有概率出现的,解题难度也千差万别,出现问题后,通常我们会拿到类似这样的kernel log信息(下面log仅以调用BUG()为例,其它异常所致的死机log信息会有一些不同之处):
刘盼
2023/01/05
2.3K0
深入理解 kernel panic 的流程
41.Linux应用调试-修改内核来打印用户态的oops
本文总结了通过分析ARM平台上的内核调试信息来定位程序错误的方法。首先介绍了调试信息和调试流程,然后详细描述了如何使用GDB来调试内核代码,包括设置断点、查看寄存器、分析堆栈信息等。最后,通过一个具体的例子来演示了如何使用GDB来调试内核程序,并分析了其中的错误和解决方法。
诺谦
2018/01/08
2.3K0
41.Linux应用调试-修改内核来打印用户态的oops
Linux内核Crash分析
在工作中经常会遇到一些内核crash的情况,本文就是根据内核出现crash后的打印信息,对其进行了分析,使用的内核版本为:Linux2.6.32。
用户5807183
2019/10/15
4.7K0
Linux内核Crash分析
Kernel Exception 问题分析详解
Android OS由3层组成,最底层是Kernel,上面是Native bin/lib,最上层是Java层:
刘盼
2021/01/11
2.3K0
Kernel Exception 问题分析详解
linux内核缺页中断处理
现代处理器大部分都有MMU,除了一些小型嵌入式设备。MMU可以做虚拟地址到物理地址的转换,使用MMU我们就可以使用更多的内存空间,因为程序具有局部性原理,我们可以将暂时用不到的数据存放到磁盘,当访问到时会发生缺页中断,从磁盘中将所需要的数据加载到内存。所以我们可以通过mmu运行程序大小大于内存的程序和打开大于内存的文件。现代处理器通过分段分页机制实现虚拟地址到物理地址转换一般支持二级页表或四级页表。
用户4415180
2022/06/23
11.1K0
linux内核缺页中断处理
深入探究Linux Kprobe机制
kprobe机制用于在内核中动态添加一些探测点,可以满足一些调试需求。本文主要探寻kprobe的执行路径,也就是说如何trap到kprobe,以及如何回到原路径继续执行。
Linux阅码场
2020/12/14
1.6K0
Linux内核调试技术——kprobe使用与实现
Linux kprobes调试技术是内核开发者们专门为了便于跟踪内核函数执行状态所设计的一种轻量级内核调试技术。利用kprobes技术,内核开发人员可以在内核的绝大多数指定函数中动态的插入探测点来收集所需的调试状态信息而基本不影响内核原有的执行流程。kprobes技术目前提供了3种探测手段:kprobe、jprobe和kretprobe,其中jprobe和kretprobe是基于kprobe实现的,他们分别应用于不同的探测场景中。本文首先简单描述这3种探测技术的原理与区别,然后主要围绕其中的kprobe技术进行分析并给出一个简单的实例介绍如何利用kprobe进行内核函数探测,最后分析kprobe的实现过程(jprobe和kretprobe会在后续的博文中进行分析)。
233333
2021/09/08
6K0
第3阶段——内核启动分析之start_kernel初始化函数(5)
诺谦
2018/01/03
1.8K0
LCD驱动程序分析
/* LCD驱动程序分析 和别的驱动程序一样,首先找到模块函数的入口处 */ #include "s3c2410fb.h" /* Debugging stuff */ #ifdef CONFIG_FB_S3C2410_DEBUG static int debug = 1; #else static int debug = 0; #endif #define dprintk(msg...) if (debug) { printk(KERN_DEBUG "s3c2410fb: " msg); }
DragonKingZhu
2022/05/08
1.6K0
[ 物联网篇 ] 28 - Linux ES7210 Driver 调试
项目开发过程中,由于Broadcom平台音频数字接口比较少,所以采用模拟麦克风作为输入端,经顺芯ES7210 ADC 转换送至Broadcom PCM 数字音频接口。
程序手艺人
2020/09/15
4K2
[ 物联网篇 ] 28 - Linux ES7210 Driver 调试
Android Native Crash 收集
本文是『张涛的NDK之旅』,本来很早以前就有很多读者希望我能写一些关于MDK的文章,但是由于我本身对NDK不熟悉,所以找来了同事张涛的文章。欢迎大家关注他的博客——开源实验室(点击原文链接可以直接访问)
用户1907613
2018/09/30
2.3K0
Android Native Crash 收集
如何编写一个Android inline hook框架
缺点:1、不支持函数替换(即hook后不执行原函数),现在只能修改参数寄存器,无法修改返回值。2、不支持定义同类型的hook函数来接受处理参数,只能通过修改寄存器的方式修改参数。多余4个/或者占两个字节的参数,那么参数还要自己从栈上捞取。所以issues中说的把mov r0,sp去掉用来接收参数也是有问题的,就是参数在栈上的情况,传过来的时候sp不是原来的sp了。
FB客服
2020/02/26
3.5K0
Linux内核调试技术——kprobe使用与实现
Linux kprobes调试技术是内核开发者们专门为了便于跟踪内核函数执行状态所设计的一种轻量级内核调试技术。利用kprobes技术,内核开发人员可以在内核的绝大多数指定函数中动态的插入探测点来收集所需的调试状态信息而基本不影响内核原有的执行流程。kprobes技术目前提供了3种探测手段:kprobe、jprobe和kretprobe,其中jprobe和kretprobe是基于kprobe实现的,他们分别应用于不同的探测场景中。本文首先简单描述这3种探测技术的原理与区别,然后主要围绕其中的kprobe技术进行分析并给出一个简单的实例介绍如何利用kprobe进行内核函数探测,最后分析kprobe的实现过程(jprobe和kretprobe会在后续的博文中进行分析)。
嵌入式Linux内核
2022/09/24
2.6K0
Linux内核调试技术——kprobe使用与实现
手把手教你分析 Linux 启动流程
最新 Linux 内核是 5.15 版本。现在常用 Linux 内核源码为4.14、4.19、4.9 等版本,其中 4.14 版本源码压缩包大概 90+M,解压后 700+M,合计 61350 个文件。如此众多的文件,用 source insight 或者 VSCode 查看都会比较卡,所以可以采用在线查看的方式。
Jasonangel
2021/10/12
1K0
06.内核启动流程分析之内核启动
内核最终目的:运行根文件系统的应用程序 内核做的事情: 处理uboot传入的参数 arch\arm\kernel /*启动内核:bi_arch_number机器ID。参数存放的地址 bd->bi_boot_params*/ theKernel (0, bd->bi_arch_number, bd->bi_boot_params); 判断是否支持单板(根据启动内核时传入的机器ID) /**/ ENTRY(stext) msr cpsr_c, #PSR_F_BIT | PSR_I_BIT | SVC_MOD
嵌入式与Linux那些事
2021/05/20
9080
用 Trace32 分析内核死机
dmesg 初步分析 [  423.400073] Unable to handle kernel NULL pointer dereference at virtual address 00000008 [  423.400075] [silead finger_interrupt_handler 505]:S IRQ 19 , GPIO 12 state is 0 [  423.400083] [silead finger_interrupt_handler 506]:state is 0 [  42
刘盼
2022/06/07
2.4K0
用 Trace32 分析内核死机
android rootfs的挂载流程[通俗易懂]
out/host/linux-x86/bin/mkbootfs out/target/product//root | out/host/linux-x86/bin/minigzip > out/target/product//ramdisk.img 上述命令分两步进行: 1.out/host/linux-x86/bin/mkbootfs out/target/product/*/root 生成一个cpio文件,利用cpio 可将文件或目录从文件库获取出来或将散列文件拷贝到文件库。 2.out/host/linux-x86/bin/minigzip 将生成的cpio文件压缩成一个gzip格式的文件“out/target/product/*/ramdisk.img“
全栈程序员站长
2022/11/08
2.6K0
解决那些千奇百怪的 Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block 错误
设备:全志T113 + eMMC,SDC2 错误描述:[EXFAT] trying to mount... 后 Panic,显示 MMC 分区表
阿志小管家
2024/02/02
1.8K0
解决那些千奇百怪的 Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block 错误
kernel启动过程详解(梳理流程的工具和方法)
uboot 打印完 Starting kernel . . .,就完成了自己的使命,控制权便交给了 kernel 的第一条指令,也就是下面这个函数 init/main.c
全栈程序员站长
2022/07/29
1.4K0
36.Linux驱动调试-根据oops定位错误代码行
摘要总结:本文介绍了从驱动程序加载到内核的流程和原理,并通过实例详细阐述了驱动程序加载的具体过程、驱动程序与内核的交互以及驱动程序加载失败的原因和解决方法。
诺谦
2018/01/08
2.8K0
36.Linux驱动调试-根据oops定位错误代码行
推荐阅读
相关推荐
深入理解 kernel panic 的流程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档