Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Problem DescriptionFraud Detection HackerLand National Bank has a simple policy for warning clients about possible fraudulent account activity. If the amount spent by a client

Problem DescriptionFraud Detection

HackerLand National Bank has a simple policy for warning clients about possible fraudulent account activity. If the amount spent by a client on a particular day is greater than or equal to 2 the client's median spending for the last d days, they send the client a notification about potential fraud. The bank doesn't send the client any notifications until they have at least d prior days of transaction data.

Given the value of d and a client's total daily expenditures for a period of n days (where n>d) write a method which returns the number of times the client will receive a notification over all days.

Note: Your algorithm efficiency should not exceed O(nd) where n is the total number of daily expenditures and d is the number of prior day expenditures used for fraud detection.

What you need to do:

To receive full credit, your method must have the following signature:

public int getNumberOfFrauds(int[] dailyExpeditures, int d)

For example:

getNumberOfFrauds({4,3,2,2,3,6,8,9,10}, 5) must return 3

Explanation: We must determine the total number of notifications the client receives over a period of days. For the first five days, the customer receives no notifications because the bank has insufficient transaction data and the number of notifications are zero.

On the sixth day, the bank has 5 days of prior transaction data {4,3,2,2,3} and the median is 3 dollars, the client spent 6 dollars on the sixth day which triggers a notification because 6 >=2* median, so the number of notifications after sixth day is 1.

On the seventh day, the bank has 5 days of prior transaction data {3,2,2,3,6} and the median is 3 dollars, the client spent 8 dollars on the seventh day which triggers a notification because 8 >=2* median, so the number of notifications after seventh day is 2.

On the eights day, the bank has 5 days of prior transaction data {2,2,3,6,8} and the median is 3 dollars, the client spent 9 dollars on the eighth day which triggers a notification because 9>=2* median, so the number of notifications after eighth day is 3. On the ninth day, the bank has 5 days of prior transaction data {2,3,6,8,9} and the median is 6 dollars, the client spent 10 dollars on the ninth day which does not triggers a notification because 10<2* median, so the number of notifications after ninth day stays at 3.

We then return the final value of notifications which is 3.

Hints: You can store the first d day spending in another array and sort this array using a fast sorting algorithm such as quick sort. For instance, for the above example, the sorted array would be {2,2,3,3,4}. Compare the next day spending ( 6 dollars) with the median and update the number of frauds. Then replace the first day spending (4 dollars) with d+1 day spending (6 dollars) in the sorted array, that is: {2,2,3,3,6}. If the resulting array is not sorted, shift array elements until it is sorted again. Find the median and compare it with d+2 day spending and update the number of frauds. Next, replace the second day spending ( 3 dollars) with d+2 day spending (8 dollars) in the sorted array, that is: {2,2,8,3,6}. If the resulting array is not sorted, shift the array elements until it is sorted again {2,2,3,6,8}. Find the median and compare it with d+3 day spending and update the number of frauds. Continue this process until you get to the last day spending and return the number of frauds.

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Transact SQL Cookbook Help For Database Programmers

Authors: Ales Spetic, Jonathan Gennick

1st Edition

1565927567, 978-1565927568

More Books

Students also viewed these Databases questions

Question

Describe the tax rules governing the formation of corporations.

Answered: 1 week ago

Question

How to find if any no. is divisble by 4 or not ?

Answered: 1 week ago

Question

Explain the Pascals Law ?

Answered: 1 week ago

Question

What about leadership lessons from particularly good or bad bosses?

Answered: 1 week ago

Question

When would you use one approach, and when would you use another?

Answered: 1 week ago