From e77f5b4c2fd92595000fb92dde051534a1ff299b Mon Sep 17 00:00:00 2001 From: Walt Mankowski Date: Mon, 17 Aug 2020 19:47:14 -0400 Subject: perl solution for challenge 74 task 1 --- challenge-074/walt-mankowski/perl/ch-1.pl | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 challenge-074/walt-mankowski/perl/ch-1.pl diff --git a/challenge-074/walt-mankowski/perl/ch-1.pl b/challenge-074/walt-mankowski/perl/ch-1.pl new file mode 100644 index 0000000000..3ad5aa7da7 --- /dev/null +++ b/challenge-074/walt-mankowski/perl/ch-1.pl @@ -0,0 +1,36 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use feature qw(:5.32); +use experimental qw(signatures); + +# TASK #1 › Majority Element +# Submitted by: Mohammad S Anwar +# +# You are given an array of integers of size $N. +# +# Write a script to find the majority element. If none found then print -1. +# +# Majority element in the list is the one that appears more than floor(size_of_list/2). +# +# Example 1 +# Input: @A = (1, 2, 2, 3, 2, 4, 2) +# Output: 2, as 2 appears 4 times in the list which is more than floor(7/2). +# +# Example 2 +# Input: @A = (1, 3, 1, 2, 4, 5) +# Output: -1 as none of the elements appears more than floor(6/2). + +my @a = @ARGV; +my $target = @a / 2; +my $result = -1; +my %cnt; + +for my $x (@a) { + if (++$cnt{$x} > $target) { + $result = $x; + last; + } +} + +say $result; -- cgit