暴躁算法-每日练习

  • 2022.4.14
    • [1672. 最富有客户的资产总量](https://leetcode-cn.com/problems/richest-customer-wealth/)
    • [剑指 Offer 03. 数组中重复的数字](https://leetcode-cn.com/problems/shu-zu-zhong-zhong-fu-de-shu-zi-lcof/)
    • [剑指 Offer 04. 二维数组中的查找](https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/)
    • [剑指 Offer 05. 替换空格](https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/)

2022.4.14

1672. 最富有客户的资产总量

难度 简单

​ 给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量

客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。

思路:

public int maximumWealth(int[][] accounts) {//钱最大的数量int max=0;//单个人的钱int count;//遍历人for(int i=0;i< accounts.length;i++){count=0;//遍历单个人的所有银行for(int j =0;j< accounts[0].length;j++){count+=accounts[i][j];}max=count>max?count:max;}return max;}

执行结果:

通过

执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户

内存消耗:40.8 MB, 在所有 Java 提交中击败了44.65%的用户

通过测试用例:34 / 34

剑指 Offer 03. 数组中重复的数字

难度简单807

找出数组中重复的数字。

​ 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。

思路1:

排序+遍历,一旦找到重复的值,立刻返回。

排序可以使用指针+原地排序数组(适用于节约空间优先的场景)

public int findRepeatNumber(int[] nums) {Arrays.sort(nums);for(int i=0;i<nums.length-1;i++){if(nums[i]==nums[i+1]){return nums[i];}}return 0;}

感觉写的很潇洒。emmmm效率不高

执行用时:4 ms, 在所有 Java 提交中击败了57.74%的用户

内存消耗:49 MB, 在所有 Java 提交中击败了44.60%的用户

思路二:

建立一个set,遍历一次,如果一个数字已经在set中,就返回,否则加入set

public int findRepeatNumber(int[] nums) {HashSet<Integer> set  = new HashSet<>();for(int i=0;i<nums.length;i++) {if(set.contains(nums[i])){return nums[i];}set.add(nums[i]);}return 0;}

还不如之前。

思路三:在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内

所以,索引与值,是一对多的关系:

因而,就能通过索引映射对应的值,起到与字典等价的作用。

遍历中,第一次遇到数字 xx 时,将其交换至索引 xx 处;

而当第二次遇到数字 xx 时,一定有 nums[x] = xnums[x]=x ,此时即可得到一组重复数字。

public int findRepeatNumber(int[] nums) {//初始化遍历指针int i = 0;while(i < nums.length) {//数字x就在索引x处,不用处理if(nums[i] == i) {i++;continue;}//遍历的时候,遇到数字x,在索引y处,想把他放回nums[x],结果nums[x]这地方已经有一个x了。//说明什么//有重复数字出现,直接返回if(nums[nums[i]] == nums[i]) return nums[i];//不然就交换到正确的位置int tmp = nums[i];nums[i] = nums[tmp];nums[tmp] = tmp;}return -1;}

结果:

执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户

内存消耗:48.3 MB, 在所有 Java 提交中击败了82.30%的用户

剑指 Offer 04. 二维数组中的查找

难度中等645

在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

思路一:直接暴力两层循环。

面试用暴力法的话,面试官:“今天就到这里吧

暴躁算法(剑指系列)-每日一练相关推荐

  1. [算法] 剑指offer2 golang 面试题2:二进制加法

    [算法] 剑指offer2 golang 面试题2:二进制加法 题目1: 给定两个 01 字符串 a 和 b ,请计算它们的和,并以二进制字符串的形式输出. 输入为 非空 字符串且只包含数字 1 和 ...

  2. 【算法-剑指 Offer】62. 圆圈中最后剩下的数字(环形链表;约瑟夫环;动态规划)

    剑指 Offer 62. 圆圈中最后剩下的数字 - 力扣(LeetCode) 发布:2021年9月12日12:18:52 问题描述及示例 0,1,···,n-1这n个数字排成一个圆圈,从数字0开始,每 ...

  3. 剑指offer每日六题---------day five

    剑指offer题25:复制一个随机链表 RondomListNode* RandomLinkCopy(RondomListNode *head) {if (!head)return NULL;//头结 ...

  4. python剑指offer替换空格_迷人的算法-剑指offer面试题5:替换空格

    题目:请实现一个函数,把字符串中的每个空格替换成"%20". 例如,输入"We are happy.",则输出"We%20are%20happy.&q ...

  5. 剑指Offer_Python实现

    基于python的<剑指offer> 剑指Offer-Python答案 剑指Offer-面试题的Python实现 Python基础算法/剑指offer

  6. Leetcode刷题笔记——剑指offer II (六)【图】

    文章目录 图 695. 岛屿的最大面积 剑指 Offer II 106. 二分图 (每条边的两个结点都来自不同的集合) 剑指 Offer II 107. 矩阵中的距离 (最短路问题,建图,BFS) 剑 ...

  7. 【算法leetcode每日一练】剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合

    文章目录 剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合: 样例 1: 样例 2: 提示: 分析 题解 java c c++ python go rust javascri ...

  8. 递增的整数序列链表的插入_每日算法题 | 剑指offer 链表专题 (5)链表中倒数第k个节点...

    点击上方"Jerry的算法和NLP",选择"星标"公众号 重磅干货,第一时间送达 题目 链表中倒数第k个节点 题目要求 输入一个链表的头结点,从尾到头反过来打印 ...

  9. 【Android春招每日一练】(九) 剑指4题+Android基础

    文章目录 概览 剑指offer 1.33 二叉树中和为某一值的路径 1.34 复杂链表的复制 1.35 二叉搜索树与双向链表 1.36 序列化二叉树 Android基础 Fragment 总结 概览 ...

  10. 【Android春招每日一练】(十六) 剑指4题+Android进阶

    文章目录 概览 剑指offer 1.61 翻转单词顺序 1.62 左旋转字符串 1.63 滑动窗口的最大值 1.64 队列的最大值 Android进阶 Android布局优化 Android权限处理 ...

最新文章

  1. layui select 与 vue 的结合使用
  2. J - Fire! UVA - 11624
  3. python数据分析(九)-点积与线性代数
  4. 金三银四面试季来临,最新BAT面试资料分享给大家
  5. 关于mysql修改密码 set password for root@localhost = password(‘xxx‘);报错解决方法
  6. 通过docker无法访问到tomcat报页面404
  7. 基于JAVA+SpringMVC+MYSQL的苗木销售系统
  8. java递归简易应用教程
  9. Hibernate→ORM、简介、第一个Hibernate实现、核心XML配置、Hibernate执行流程、操作数据库对象session、事务、映射XML配置、单例CRUD、get与load
  10. HDU 2504 又见GCD(最大公约数与最小公倍数变形题)
  11. Error: Error while compiling statement: FAILED: ParseException line 1:20 cannot recognize input near
  12. java解析bt协议详解_bt协议详解 基础篇(下)
  13. 论文笔记1:Full-Spectrum Denoising of High-SNR Hyperspectral Images
  14. openwrt多wan限上下行速脚本,基于qosv4,imq模块替换成ifb模块
  15. oracle SO币种默认设置,Oracle EBS 11i 表结构——OE模块 so_headers_all;so_lines_all
  16. java极光短信的集成
  17. sinr是什么意思_信噪比有负的吗?表示什么意思?
  18. Python 海龟绘图 100 题——第 72 题
  19. Android 8.1 9.0 10.0 在系统app安装第三方app弹出 解析安装包出现问题 的解决方案
  20. FPGA--简易DDS信号发生器 (内涵DDS与CORDIC IP核详解)附源码

热门文章

  1. android 屏幕密度范围,Android屏幕密度
  2. android蓝牙耳机来电铃声,Android实现积极连接蓝牙耳机
  3. 如何给Excel减肥(相关技巧和注意事项)
  4. pytorch中的transforms介绍
  5. 软件测试之弱网测试工具
  6. BUUCTF Misc 弱口令 [RoarCTF2019]黄金6年 小易的U盘 [WUSTCTF2020]alison_likes
  7. Component is missing template or render function
  8. Codeforce 1296 C. Yet Another Walking Robot
  9. channel.QueueDeclare各个参数详解
  10. 小程序scroll-view文字不能自动换行