Esempio n. 1
0
        public int[] MaxSubarraySum(int[] arr, int x)
        {
            if (arr.Length == 0 || arr.Length < x)
            {
                return(Array.Empty <int>());
            }

            MyQueue q    = FillQueue(arr, x);//n
            int     pSum = 0;
            int     cSum = 0;

            int[] result = new int[x];           //n
            for (int i = x; i < arr.Length; i++) // n = arr.Length
            {
                pSum = Sum(q);                   // n = x.Length
                q.Remove();
                q.Add(arr[i]);
                cSum = Sum(q);
                if (cSum > pSum)
                {
                    result = FillArray(q);
                }
            }
            return(result);
        }
Esempio n. 2
0
        public int[] MaxSubarraySum(int[] arr, int k)
        {
            MyQueue queue = new MyQueue();
            MyQueue maxQ  = new MyQueue();

            for (int i = 0; i < arr.Length; i++)
            {
                if (queue.count < k)
                {
                    queue.Add(arr[i]);
                }
                else if (queue.count == k)
                {
                    queue.Add(arr[i]);
                    queue.Remove();
                    queue.maxSum = SumOfAllNodeItems(queue);
                    if (maxQ.maxSum < queue.maxSum)
                    {
                        maxQ        = CloneQueue(queue);
                        maxQ.maxSum = queue.maxSum;
                    }
                }
            }
            return(FromQueueToArray(maxQ));
        }
Esempio n. 3
0
        public static void ExecQueue()
        {
            MyQueue myQueue = new MyQueue();

            myQueue.IsEmpty();

            myQueue.PrintQueue();

            myQueue.Add(7);

            myQueue.Add("Tina");

            myQueue.Add("11 bytes");

            myQueue.Add(91);

            myQueue.Remove();

            myQueue.PrintQueue();
        }