1. Introduction
In this post, we'll delve into a common problem in algorithmic interviews and coding challenges: finding two numbers in a sorted array that sum up to a specific target. This problem is an excellent example of how to apply the two-pointer technique in a sorted array to achieve an efficient solution.
Problem
Given a 1-indexed, sorted array of integers 'numbers', we are tasked with finding two numbers such that their sum equals a given target number. The solution must return the indices of these two numbers, incremented by one, as an integer array of length 2. It's important to note that each number in the array can only be used once and the solution should only use constant extra space.
2. Solution Steps
1. Initialize two pointers: one at the start and another at the end of the array.
2. Calculate the sum of the elements pointed by the two pointers.
3. If the sum equals the target, return the indices of these two elements.
4. If the sum is less than the target, move the start pointer to the right.
5. If the sum is greater than the target, move the end pointer to the left.
6. Repeat steps 2-5 until the solution is found.
3. Code Program
public class TwoSum {
public static void main(String[] args) {
int[] numbers = {2, 7, 11, 15};
int target = 9;
int[] result = twoSum(numbers, target);
System.out.println("[" + result[0] + ", " + result[1] + "]"); // Output
}
// Function to find two numbers such that they add up to a specific target
public static int[] twoSum(int[] numbers, int target) {
int start = 0; // Starting pointer
int end = numbers.length - 1; // Ending pointer
while (start < end) {
int sum = numbers[start] + numbers[end]; // Calculate sum of the two numbers
if (sum == target) {
return new int[]{start + 1, end + 1}; // Return indices (1-indexed)
} else if (sum < target) {
start++; // Move the start pointer to the right
} else {
end--; // Move the end pointer to the left
}
}
return new int[]{-1, -1}; // Return default value if no solution is found
}
}
Output:
[1, 2]
Explanation:
1. twoSum: This function uses a two-pointer approach. The start pointer is initialized at the beginning of the array, and the end pointer at the end.
2. In each iteration, it calculates the sum of the elements pointed to by start and end.
3. If this sum equals the target, it returns the indices of these elements (adjusted for 1-indexing).
4. If the sum is less than the target, the algorithm moves the start pointer to the right, as the array is sorted in non-decreasing order.
5. If the sum is greater, the end pointer is moved to the left.
6. The loop continues until a solution is found or all possibilities are exhausted.
Related Java Source Code Examples:
Java Record Class Example
Java Text Blocks Example
Java Record Builder Pattern Example
Java Record Constructor Example
Java Record Constructor Validation Example
Java Record Serializable Example
Java Record Getter Example
Java Record Default Constructor
Java Records CRUD (Create, Read, Update, Delete) Example
Java Record Custom Methods
Java Record Custom toString
Java Record Custom equals and hashCode
Java Records with Spring Boot CRUD Example
Java Record Implement Interface Example
Java Switch Expressions Example
Java Pattern Matching for instanceof
Java Sealed Class Example
Java Sealed Class vs Final Class
Java Sealed Class Record Example
Java Sealed Class Generic Example
Java Sealed Class Enum Example
Java Sealed Class Switch Example
Java var Keyword Example
Java CompactNumberFormat Class Example
Java Vector API Example
Pattern Matching for Switch Example
Collectors.teeing() in Stream API Example
Java FileSystems.newFileSystem() Method Example
Java Files.readString() and Files.writeString() Example
Java String isBlank Example
Java String strip Example
Java String repeat Example
Java String lines Example
Java String stripIndent Example
Java Binary Search (Recursive and Iterative) Program
Java Happy Birthday Program
Java Program That Calculates the Age of a Person
Java Logical And Or Xor Examples
Java Format Date and Time Examples
Java Convert String to Date and Time
Java Convert Roman to Integer Number
Java Convert Octal to HexaDecimal
Java Convert Octal to Decimal
Java Convert Integer Number to Roman Number
Java Convert Hexadecimal to Binary
Java Convert Decimal to Octal
Java Convert Decimal to Binary
Java Convert Binary to Decimal
Java Convert Binary to an Octal
Java Convert Binary to a Hexadecimal
Java Convert a Unix Timestamp to Date Time
Java Check If Two Integer Arrays are Equals
Java program that removes all white spaces from the given string
Java 8 program that counts the number of vowels and consonants in a given string
Java 8 program that reverses words of a given string
Java Program to Count Number of Digits in an Integer
Java Program Fibonacci Series Using Recursion
Java Program to Find Factorial of a Number
Java program to calculate the area of Triangle
Java Program to Calculate Area of Square
Java Program to Calculate Area of Rectangle
Java Program to find the Smallest of three numbers using Ternary Operator
Java Program to Find Largest of Three Numbers
Java Program to Find GCD of Two Numbers
Java Program to Check Armstrong Number
Java Program to Generate Random Number
Java Program to Check if Number is Positive or Negative
Java program to check prime number
Java Program to Calculate Simple Interest
Java Program to Swap Two Numbers Without using a Temporary Variable
Java Program to Swap Two Numbers
Java Program to Find ASCII Value of a Character
Java Program to Check Whether an Alphabet is Vowel or Consonant
Java Program to Check Leap Year
Java Program to Check Even or Odd Number
Java Program to Add Two Numbers
Java Program to Swap Two Strings Without Using Third Variable
Java Program to Swap Two Strings with Third Variable
How to Get All Digits from String in Java
Find Duplicate Number in Array in Java
How to Get Current Working Directory in Java?
Check Palindrome String in Java
Java Program to Create Pyramid Of Numbers
Create a String object in Java Example
Java String valueOf() Method Example
Java String.trim() Method Example
Java String.toUpperCase() Method Example
Java String toLowerCase() Method Example
Java String toCharArray() Method Example
Java String substring() Method Example
Java String.startsWith() Method Example
Java String split() Method Example
Java String.replaceFirst() Method Example
Java String.replaceAll() Method Example
Java String replace() Method Example
Java String regionMatches() Method Example
Java String length() Method Example
Java String lastIndexOf() Method Example
Java String intern() Method Example
Java String indexOf() Method Example
Java String getChars() Method Example
Java String getBytes() Method Example
Java String equals() and equalsIgnoreCase() Example
Java String.endsWith() Method Example
Java String.contentEquals() Method Example
Java String.contains() Method Example
Java String concat() Method Example
What's the Simplest Way to Print a Java Array?
Merge two String Arrays Example
Checks If a String is Not Empty and Not Null in Java
Reverse a String in Java Using StringBuilder
Capitalize the First Letter of a String in Java Example
Java String codePointAt() Method Example
Java String Compare Using equals() Method
Sort String in Descending Order in Java
Sort String in Ascending Order in Java
How to Get All Digits from String in Java
Java String getDigits() Utility Method
Java String isAlphanumeric() Utility Method
Java String isAlpha() Utility Method
Java String countMatches() Utility Method
Java String mergeStringArrays(String array1[], String array2[]) Utility Method Example
Java String quote( String str) Utility Method
Java arrayToMap(String[][] array) Utility Method
Java String fromBufferedReader() Utility Method - Converts a BufferedReader into a String
Java String isNumericSpace() Utility Method
Java String isNumeric() Utility Method
Java String isAlphanumericSpace() Utility Method
Java String isAlphaSpace(() Utility Method
Java trimArrayElements() Utility Method
Java trimArrayElements() Utility Method
Java String containsWhitespace() Utility Method
Java String isBlank() Utility Method
Java String isAnyEmpty() Utility Method
Java String isNotEmpty() Utility Method
Java String isEmpty() Utility Method
Java String Uppercase First Character Example
Java String uppercaseFirstChar() Utility Method
Java String trimTrailingCharacter() Utility Method
Java String trimLeadingCharacter() Utility Method
Java String trimTrailingWhitespace() Utility Method
Java String trimLeadingWhitespace() Utility Method
Java String trimAllWhitespace() Utility Method
Java String trimWhitespace() Utility Method
Java StringBuilder trimToSize() Method Example
Java StringBuilder substring() Method Example
Java StringBuilder setLength() Method Example
Java StringBuilder reverse() Method Example
Java StringBuilder lastIndexOf() Method Example
Java StringBuilder insert() Method Example
Java StringBuilder indexOf() Method Example
Java StringBuilder getChars() Method Example
Java StringBuilder ensureCapacity() Method Example
Java StringBuilder deleteCharAt() Method Example
Java StringBuilder delete() Method Example
Java StringBuilder codePointBefore() Method Example
Java StringBuilder codePointAt Method Example
Java StringBuilder capacity() Method Example
Java StringBuilder append() Method Example
Java Convert Integer to String Example
Java Convert Float to String Example
Java Convert Double to String Example
Java Convert Short to String Example
Java Convert Long to String Example
Java Convert Character to String Example
Java Convert Byte to String Example
Java Convert Boolean to String Example
Java Convert String To Short Example
Java Convert String To Long Example
Java Convert String To Integer Example
Java Convert String To Float Example
Java Convert String To Double Example
Java Convert String To Byte Example
Java Convert String To Boolean Example
Clear ArrayList in Java Example
Java ArrayList add(), get() and set() Method Example
Iterate over ArrayList Using forEach Java
Iterate over ArrayList using Iterator in Java
Java ArrayList indexOf() and lastIndexOf() Example
Search an Element in an ArrayList in Java
Java ArrayList removeAll() Method Example
Java ArrayList remove() Method Example
How to Iterate over ArrayList in Java
How to Remove Element from ArrayList in Java
How to Access Elements of ArrayList in Java
Create ArrayList from Another ArrayList in Java
How to Create an ArrayList and Add Elements to It
Java ArrayList subList() Example
Get Index of Elements in ArrayList Example
Java ArrayList removeIf() Example
Copying part of Array in Java Example
Sorting an Array using Arrays.sort() Method
Check Two Arrays are Deeply Equal
Java Arrays.copyOf() Example - Copying an Array
Java Arrays.binarySearch() Example - Searching an Array
Java Arrays.asList() Example - Convert Array to ArrayList
Sort String in Ascending Order in Java
Sort String in Descending Order in Java
Sort Integer in Ascending Order in Java Example
Sort Integer in Descending Order in Java Example
Sort User-Defined Objects in Ascending Order in Java
Sort User-Defined Objects in Descending Order in Java
Sort User-Defined Objects using Comparator Interface
Java LinkedList add(), addFirst(), addLast() and addAll() Example
Iterate LinkedList using forEach() Method Example
Iterate through a LinkedList using an Iterator in Java
Iterate or Loop Through Elements LinkedList in Java Example
Search Elements of LinkedList in Java with Example
Remove First and Last Elements of LinkedList in Java
Get Elements from LinkedList Java Example
Java LinkedList remove(), removeFirst(), removeLast(), removeIf() and clear() Example
Create HashSet in Java
Iterating over a HashSet using Iterator
Iterate over HashSet in Java
Remove Element from HashSet in Java
Create HashSet in Java
Iterating over a LinkedHashSet using forEach() Method Example
Iterate over LinkedHashSet using Iterator in Java Example
Iterate over LinkedHashSet in Java Example
Remove all Elements from LinkedHashSet in Java Example
Remove Element from LinkedHashSet Example
Check If an Element Exists in Java LinkedHashSet Example
Create LinkedHashSet in Java Example
Create TreeSet in Java Example
Iterating over a TreeSet using Java 8 forEach() Method
Iterate over a TreeSet using Iterator in Java Example
Iterate over TreeSet in Java Example
Remove All Elements from Java TreeSet Example
Remove First and Last Element from TreeSet in Java
Remove Element from TreeSet in Java Example
Check If an Element Exists in Java TreeSet Example
Java TreeSet add(), first() and last() Method Example
Java Convert ArrayList to Stack Example
Java Convert Array to Stack Example
Java Stack push() Method Example
Java Stack empty() Method Example
Java Stack peek() Method Example
Java Stack search() Method Example
Java Stack pop() Method Example
Java Deque and ArrayDeque Examples
Iterating over a Queue in Java Example
Java Queue isEmpty(), size(), element() and peek() Example
Java Queue Interface Example
Java Priority Queue of User Defined Objects Example
Java Create a Priority Queue with a Custom Comparator
Create a Priority Queue in Java Example
HashMap Stream and Filtering Example
Java HashMap Iteration over Values Example
Java HashMap Iteration over Keys
Java HashMap replace() Example
Java HashMap size Example
Iterate over a HashMap Java using Lambda
Iterate over a HashMap Java 8 forEach
Iterating over a HashMap using Iterator in Java
Iterate over HashMap in Java
How to Store Employee Objects in HashMap
Remove Entry from HashMap Java
Check If Value Exists in HashMap Java Example
Check If Key Exists in HashMap Java Example
Create a HashMap in Java Example
How to Delete Data from MySQL Table using Java
How to Insert Data in MySQL Table using Java
How to Create Database Table in Java
JDBC DriverManager Example
JDBC PreparedStatement Example
JDBC Statement Example
Java MySQL DataSource Example
Update Query in MySQL using Java PreparedStatement
Login Example with JSP + Servlet + JDBC + MySQL Database
JSP + JDBC + MySQL Example Tutorial
JSP Form Example with JDBC and MySQL Database
Java JDBC CRUD Example - SQL Insert, Select, Update, and Delete Examples
Java Swing JDBC MySQL Database Example
Java JDBC Connection to HSQLDB Database
JDBC Connection to H2 Database Example
JDBC Connection to PostgreSQL Example
JDBC Connection to Oracle Database Example
JDBC Transaction Management Example
JDBC Delete Query Example
JDBC Select Query Example
JDBC Update Query Example
JDBC Insert Multiple Rows Example
JDBC Create a Table Example
What are different types of JDBC Drivers
Advantages of Hibernate Framework over JDBC
Java PostgreSQL Example
Java H2 Insert Record Example
Java H2 Embedded Database Example
Java H2 Create Table Example
Java Simple Lambda Expression Example
Java Lambda Expressions Multiple Statements
Java Lambda Expressions forEach Example
Java Lambda Expression with Multiple Parameters Example
Java Lambda Expression Runnable Example
Java Lambda Expression Comparator Example
Refactoring Factory Design Pattern with Lambdas
Refactoring Chain of Responsibility Pattern with Lambdas
Refactoring Observer Design Pattern with Lambdas
Refactoring Strategy Design Pattern with Lambdas
Iterate HashMap with forEach() + Lambda Expression Example
Iterate HashSet with forEach() + Lambda Expression Example
Iterate ArrayList with forEach() + Lambda Expression Example
Java method reference to a constructor example
Java method reference to static method example
Java method reference to an instance method of an object example
Java method reference to an instance method of an arbitrary object of a particular type
Java 8 - Create Stream Object from Arrays Example
Java 8 Creating a Stream from an Array
Java 8 - Create Stream Object from Collection, List, Set
Java 8 Stream - Sort List of String objects in Descending Order Example
Java 8 Stream - Sort List of String objects in Ascending Order Example
How to convert a Java 8 Stream to an Array?
Java 8 Stream - allMatch(),anyMatch() and noneMatch() Example
Java 8 Stream - Sort List of Objects by Multiple Fields
Java 8 Stream - Sort List of Custom Objects in Ascending and Descending Order
Java 8 - Stream filter(), forEach(), collect() and Collectors.toList() Example
Java Stream filter null values example
Java Stream filter map by values example
Java Stream filter map by keys example
Java 8 Collectors.counting() Example
Java 8 Collectors.averagingDouble() Example
Java 8 Collectors.toSet() Example
Java 8 Collectors.toList() Example
Java 8 Collectors.joining() example
Java 8 Stream multiple filter operations
Java 8 Stream filter map by keys
Java 8 Stream filter map by values
Java 8 Stream collect to list example
Java 8 Stream Collectors.counting() exmaple
Java 8 Collectors.collectingAndThen() example
Java 8 Collectors.toList() Example
Java 8 Collectors.minBy() and Collectors.maxBy() example
Java Stream filter() Example
Java Stream map() Example
Java Stream flatMap() Example
Java Stream distinct() Example
Java Stream limit() Example
Java Stream peek() Example
Java Stream anyMatch() Example
Java Stream allMatch() Example
Java Stream noneMatch() Example
Java Stream collect() Example
Java Stream count() Example
Java Stream findAny() Example
Java Stream findFirst() Example
Java Stream forEach() Example
Java Stream min() Example
Java Stream max() Example
Java Stream reduce() Example
Java Stream toArray() Example
Java Function Functional Interface Example
Java Supplier Functional Interface Example
Java Consumer Example
Java BiConsumer Example
Java BiFunction Example
Java Predicate Example
Java 8 LongConsumer Example
Java 8 IntConsumer Example
Java 8 DoubleConsumer Example
Java StringJoiner Example
Create Optional Class Object in Java - empty(), of(), ofNullable() Methods
Optional get() Method - Get Value from Optional Object in Java
Optional isPresent() Method Example
Optional orElse() Method Example
Optional orElseGet() Method Example
Optional orElseThrow() Method Example
Optional filter() and map() Method Examples
Java 8 program that counts the number of vowels and consonants in a given string
Java 8 program that reverses words of a given string
Java 8 - Copy List into Another List Example
Check Whether the Given Year is Leap Year or Not in Java
Java 8 forEach() Array Example
Java 8 forEach() Map Example
Java 8 forEach() Set Example
Java 8 forEach() List Example
Getting current date and time with Clock
Convert LocalDate to Date in Java
Convert LocalDateTime into Date in Java
Connvert java.util.Date to java.time.LocalDateTime Example
Convert java.util.Date to java.time.LocalDate Example
Duration Between Two LocalDate in Java
Java Convert ZonedDateTime to String Example
Convert String to ZonedDateTime in Java
Compare ZonedDateTime Objects in Java
How to Get Hour, Minute, Second from ZonedDateTime in Java
Convert ZonedDateTime to LocalTime Example
Convert ZonedDateTime to LocalDateTime in Java
Java ZonedDateTime now() and of() Method Example
Convert LocalDateTime to LocalTime in Java
Convert LocalDateTime to LocalDate in Java
Compare LocalDateTime Objects in Java
Java LocalDateTime - Get Hour, Minute and Second
How to Get Day Month and Year from LocalDateTime in Java
Java LocalDateTime now() Method Example
How to Get Current Date Time in Java
Convert LocalDate to String in Java
Convert String to LocalDate in Java
Java LocalDate isLeapYear() Method Example
How to Get Number of Days from Month and Year using LocalDate in Java
Compare Java LocalDate Objects Example
How to Add Days Weeks Months and Years to LocalDate in Java
How to get Day Month and Year from LocalDate in Java
Java LocalDate now() Method Example - Get Current Date and Specific Date
Convert LocalTime to String in Java
Convert String to LocalTime in Java
Java LocalTime isBefore() and isAfter() Method Example
How to Compare Time in Java
Java 8 - LocalTime getHour(), getMinute(), getSecond() and getNano() Example
Java LocalTime now() Method Example - Get Current Time and Specific Time
Java 8 Get Local Date Time in All Available Time Zones
How to get year, month, day, hours, minutes, seconds and milliseconds of LocalDateTime in Java 8?
How to get year, month, day, hours, minutes, seconds and milliseconds of Date in Java?
Difference between Two Dates in Java
Create LocalDateTime from LocalDate and LocalTime in Java
Java
LeetCode Solution
Comments
Post a Comment