热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

删除给定元素后查找最大元素

删除给定元素后查找最大元素原文:https://www.geek

删除给定元素后查找最大元素

原文:https://www.geeksforgeeks.org/find-the-largest-after-deleting-the-given-elements/

给定一个整数数组,请在删除给定元素后找到最大的数字。 如果重复元素,请为包含要删除元素的数组中存在的元素的每个实例删除一个实例。

示例

输入:array[] = {5, 12, 33, 4, 56, 12, 20}, del[] = {12, 33, 56, 5}

输出:20

说明:我们在删除给定元素后得到{12, 20}。 其余元素中最大的是 20

方法


  • 将所有要从数组中删除的数字插入到哈希映射中,以便我们可以检查数组元素是否在O(1)时也出现在删除数组中。


  • 初始化最大值maxINT_MIN


  • 遍历数组。 检查元素是否存在于哈希映射中。


  • 如果存在,则将其从哈希映射中删除;否则,将其与max变量进行比较,如果元素的值大于最大值,则将其值更改。



C++

// C++ program to find the largest number
// from the array after  n deletions
#include "climits"
#include "iostream"
#include "unordered_map"
using namespace std;
// Returns maximum element from arr[0..m-1] after deleting
// elements from del[0..n-1]
int findlargestAfterDel(int arr[], int m, int del[], int n)
{
    // Hash Map of the numbers to be deleted
    unordered_map mp;
    for (int i = 0; i         // Increment the count of del[i]
        mp[del[i]]++;
    }
    // Initializing the largestElement
    int largestElement = INT_MIN;
    for (int i = 0; i         // Search if the element is present
        if (mp.find(arr[i]) != mp.end()) {
            // Decrement its frequency
            mp[arr[i]]--;
            // If the frequency becomes 0,
            // erase it from the map
            if (mp[arr[i]] == 0)
                mp.erase(arr[i]);
        }
        // Else compare it largestElement
        else
            largestElement = max(largestElement, arr[i]);
    }
    return largestElement;
}
int main()
{
    int array[] = { 5, 12, 33, 4, 56, 12, 20 };
    int m = sizeof(array) / sizeof(array[0]);
    int del[] = { 12, 33, 56, 5 };
    int n = sizeof(del) / sizeof(del[0]);
    cout <    return 0;
}

Java

// Java program to find the largest number
// from the array after n deletions
import java.util.*;
class GFG 
{
// Returns maximum element from arr[0..m-1] after deleting
// elements from del[0..n-1]
static int findlargestAfterDel(int arr[], int m,
                               int del[], int n)
{
    // Hash Map of the numbers to be deleted
    HashMap            Integer> mp = new HashMap                                      Integer>();
    for (int i = 0; i     {
        // Increment the count of del[i]
        if(mp.containsKey(del[i]))
        {
            mp.put(del[i], mp.get(del[i]) + 1);
        }
        else
        {
            mp.put(del[i], 1);
        }
    }
    // Initializing the largestElement
    int largestElement = Integer.MIN_VALUE;
    for (int i = 0; i     {
        // Search if the element is present
        if (mp.containsKey(arr[i])) 
        {
            // Decrement its frequency
            mp.put(arr[i], mp.get(arr[i]) - 1);
            // If the frequency becomes 0,
            // erase it from the map
            if (mp.get(arr[i]) == 0)
                mp.remove(arr[i]);
        }
        // Else compare it largestElement
        else
            largestElement = Math.max(largestElement, arr[i]);
    }
    return largestElement;
}
// Driver Code
public static void main(String[] args) 
{
    int array[] = { 5, 12, 33, 4, 56, 12, 20 };
    int m = array.length;
    int del[] = { 12, 33, 56, 5 };
    int n = del.length;
    System.out.println(findlargestAfterDel(array, m, del, n));    
}
}
// This code is contributed by Rajput-Ji

Python3

# Python3 program to find the largest 
# number from the array after n deletions
import math as mt
# Returns maximum element from arr[0..m-1] 
# after deleting elements from del[0..n-1]
def findlargestAfterDel(arr, m, dell, n):
    # Hash Map of the numbers
    # to be deleted
    mp = dict()
    for i in range(n):
        # Increment the count of del[i]
        if dell[i] in mp.keys():
            mp[dell[i]] += 1
        else:
            mp[dell[i]] = 1
    # Initializing the largestElement
    largestElement = -10**9
    for i in range(m):
        # Search if the element is present
        if (arr[i] in mp.keys()):
            # Decrement its frequency
            mp[arr[i]] -= 1
            # If the frequency becomes 0,
            # erase it from the map
            if (mp[arr[i]] == 0):
                mp.pop(arr[i])
        # Else compare it largestElement
        else:
            largestElement = max(largestElement, 
                                         arr[i])
    return largestElement
# Driver code
array = [5, 12, 33, 4, 56, 12, 20]
m = len(array)
dell = [12, 33, 56, 5]
n = len(dell)
print(findlargestAfterDel(array, m, dell, n))
# This code is contributed 
# by mohit kumar 29

C

// C# program to find the largest number
// from the array after n deletions
using System;
using System.Collections.Generic;
class GFG 
{
// Returns maximum element from arr[0..m-1] 
// after deleting elements from del[0..n-1]
static int findlargestAfterDel(int []arr, int m,
                               int []del, int n)
{
    // Hash Map of the numbers to be deleted
    Dictionary               int> mp = new Dictionary                                        int>();
    for (int i = 0; i     {
        // Increment the count of del[i]
        if(mp.ContainsKey(del[i]))
        {
            mp[arr[i]] = mp[arr[i]] + 1;
        }
        else
        {
            mp.Add(del[i], 1);
        }
    }
    // Initializing the largestElement
    int largestElement = int.MinValue;
    for (int i = 0; i     {
        // Search if the element is present
        if (mp.ContainsKey(arr[i])) 
        {
            // Decrement its frequency
            mp[arr[i]] = mp[arr[i]] - 1;
            // If the frequency becomes 0,
            // erase it from the map
            if (mp[arr[i]] == 0)
                mp.Remove(arr[i]);
        }
        // Else compare it largestElement
        else
            largestElement = Math.Max(largestElement, 
                                             arr[i]);
    }
    return largestElement;
}
// Driver Code
public static void Main(String[] args) 
{
    int []array = { 5, 12, 33, 4, 56, 12, 20 };
    int m = array.Length;
    int []del = { 12, 33, 56, 5 };
    int n = del.Length;
    Console.WriteLine(findlargestAfterDel(array, m, del, n)); 
}
}
// This code is contributed by Princi Singh

输出

20

时间复杂度O(n)





推荐阅读
  • [编程题] LeetCode上的Dynamic Programming(动态规划)类型的题目
    继上次把backTracking的题目做了一下之后:backTracking,我把LeetCode的动态规划的题目又做了一下,还有几道比较难的Medium的题和Hard的题没做出来,后面会继续 ... [详细]
  • 基于OpenCV的小型图像检索系统开发指南
    本文详细介绍了如何利用OpenCV构建一个高效的小型图像检索系统,涵盖从图像特征提取、视觉词汇表构建到图像数据库创建及在线检索的全过程。 ... [详细]
  • GCC(GNU Compiler Collection)是GNU项目下的一款功能全面且高效的多平台编译工具,广泛应用于Linux操作系统中。本文将详细介绍GCC的特点及其基本使用方法。 ... [详细]
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
  • 本文详细介绍了如何使用 Python 编程语言中的 Scapy 库执行 DNS 欺骗攻击,包括必要的软件安装、攻击流程及代码示例。 ... [详细]
  • 本文档旨在提供C语言的基础知识概述,涵盖常量、变量、数据类型、控制结构及函数定义等内容。特别强调了常量的不同类型及其在程序中的应用,以及如何正确声明和使用函数。 ... [详细]
  • 3144:[Hnoi2013]切糕TimeLimit:10SecMemoryLimit:128MBSubmit:1261Solved:700[Submit][St ... [详细]
  • 本文介绍如何使用Python编程语言合并字典中具有相同集合值的键,并提供两种实现方法。 ... [详细]
  • HDU1085 捕获本·拉登!
    问题描述众所周知,本·拉登是一位臭名昭著的恐怖分子,他已失踪多年。但最近有报道称,他藏匿在中国杭州!虽然他躲在杭州的一个洞穴中不敢外出,但近年来他因无聊而沉迷于数学问题,并声称如果有人能解出他的题目,他就自首。 ... [详细]
  • 本文详细介绍了在 Windows 7 上安装和配置 PHP 5.4 的 Memcached 分布式缓存系统的方法,旨在减少数据库的频繁访问,提高应用程序的响应速度。 ... [详细]
  • 2022年4月15日的算法练习题,包括最长公共子序列和线段树的应用。 ... [详细]
  • 本文详细介绍了Oracle RMAN中的增量备份机制,重点解析了差异增量和累积增量备份的概念及其在不同Oracle版本中的实现。通过对比两种备份方式的特点,帮助读者选择合适的备份策略。 ... [详细]
  • 深入解析mt_allocator内存分配器(二):多线程与单线程场景下的实现
    本文详细介绍了mt_allocator内存分配器在多线程和单线程环境下的实现机制。该分配器以2的幂次方字节为单位分配内存,支持灵活的配置和高效的性能。文章分为内存池特性描述、内存池实现、单线程内存池实现、内存池策略类实现及多线程内存池实现等部分,深入探讨了内存池的初始化、内存分配与回收的具体实现。 ... [详细]
  • 深入解析C++ Atomic编程中的内存顺序
    在多线程环境中,为了防止多个线程同时修改同一数据导致的竞争条件,通常会使用内核级同步对象,如事件、互斥锁和信号量等。然而,这些方法往往伴随着高昂的上下文切换成本。本文将探讨如何利用C++11中的原子操作和内存顺序来优化多线程编程,减少不必要的开销。 ... [详细]
  • ED Tree HDU4812 点分治+逆元
    这道题非常巧妙!!!我们进行点分治的时候,算出当前子节点的所有子树中的节点,到当前节点节点的儿子节点的距离,如下图意思就是当前节点的红色节点,我们要求出红色节点的儿子节点绿色节点, ... [详细]
author-avatar
老男孩标兄_164
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有