How to get almost increasing sequence of integers in JavaScript ?

In JavaScript, an almost increasing sequence is a sequence where most elements are in non-decreasing order, with at most one element that breaks this pattern. This article demonstrates how to generate such sequences programmatically.

Understanding the Problem

An almost increasing sequence allows for exactly one "violation" where an element might be smaller than its predecessor. For example, [1, 3, 2, 5, 6] is almost increasing because only one element (2) breaks the increasing pattern. Our goal is to generate such sequences randomly in JavaScript.

Algorithm Approach

We'll create a function that generates a mostly increasing sequence by:

  • Step 1: Start with a random initial number
  • Step 2: Add random increments (1-10) to create an increasing trend
  • Step 3: Optionally introduce one small decrease to make it "almost" increasing
  • Step 4: Return the complete sequence as an array

Implementation

// Function to generate almost increasing sequence
function generateAlmostIncreasingSequence(length) {
   const sequence = [];
   
   // Generate first number randomly (0-99)
   sequence.push(Math.floor(Math.random() * 100));
   
   // Generate remaining numbers with increasing trend
   for (let i = 1; i 

Almost increasing sequence:
[42, 48, 53, 59, 63, 69, 74, 80]
Is almost increasing: true

Enhanced Version with Controlled Violation

Here's an enhanced version that deliberately introduces exactly one violation:

function generateAlmostIncreasingWithViolation(length) {
   const sequence = [];
   
   // Generate base increasing sequence
   sequence.push(Math.floor(Math.random() * 50));
   
   for (let i = 1; i  2 && Math.random() > 0.5) {
      const violationIndex = Math.floor(Math.random() * (length - 1)) + 1;
      const reduction = Math.floor(Math.random() * 5) + 1;
      sequence[violationIndex] = Math.max(0, sequence[violationIndex] - reduction);
   }
   
   return sequence;
}

const enhanced = generateAlmostIncreasingWithViolation(6);
console.log("Enhanced sequence:", enhanced);

// Count violations
function countViolations(arr) {
   let count = 0;
   for (let i = 1; i 

Enhanced sequence: [23, 29, 25, 31, 38, 44]
Violations count: 1

Complexity Analysis

Aspect Complexity Explanation
Time O(n) Single loop through sequence length
Space O(n) Array storage for n elements

Key Points

  • Almost increasing sequences have at most one decreasing element
  • Random generation ensures variety in output
  • The approach scales linearly with sequence length
  • Validation functions help verify sequence properties

Conclusion

Generating almost increasing sequences in JavaScript is straightforward using random number generation and controlled increments. This approach provides flexible sequence generation with predictable mathematical properties for various applications.

Updated on: 2026-03-15T23:19:00+05:30

443 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements