Subarray with given sum :
Solution :
object Main {
import scala.collection.mutable.ArrayBuffer
import scala.util.control.Breaks._
def main(args: Array[String]) {
//Code
var userArray:ArrayBuffer[Int]= ArrayBuffer()
var subArray:ArrayBuffer[Int] = ArrayBuffer()
println("Array size : ")
val arrSize:Int = scala.io.StdIn.readInt()
println("user array of size " + arrSize)
var i:Int=0
while(i<(arrSize))
{
var arrData:Int = scala.io.StdIn.readInt()
userArray = userArray :+ arrData
i+=1
}
// userArray.map(x=> println(x))
println("-----------------------")
println("Enter index sum to find in array : ")
val sumToFind:Int = scala.io.StdIn.readInt()
println("Sum which needs to find : "+ sumToFind.toString)
var j=0
var index=0
var TempArray:ArrayBuffer[Int] = ArrayBuffer()
if(sumToFind>userArray.sum)
{
println(" Sum entered exceed total array sum limit.")
}
else {
breakable {
TempArray = userArray
println("Element of Array : ")
userArray.map{m=>println(m)}
for(l<-0 to userArray.length-1){
while (sumToFind >= subArray.sum) {
if (sumToFind == subArray.sum) {
println("Element of SubArray : ")
subArray.map{x=>println(x)}
if((index+1) == (index + subArray.length))
{
println("Index value is : {" + (index + 1)+"}")
}
else {
println("Index value is : {" + (index + 1) + " - " + (index + subArray.length) + "}")
}
break
}
else {
if (TempArray.isEmpty) {
println("Entered sum number is beyond this Array some limit.")
}
else {
subArray = TempArray.take(j)
/*//subArray = subArray :+ userArray(index)
println("Temp-Array value : ")
TempArray.map { z => println(z) }
println("Sub-Array value : ")
subArray.map { z => println(z) }*/
if(TempArray.length == subArray.length && sumToFind > subArray.sum)
{
println("No such sum exists in the array given by you !!!")
break
}
}
}
j = j + 1
}
while (sumToFind < subArray.sum) {
TempArray -= subArray(0)
subArray -= subArray(0)
//subArray.map{x=> println(x)}
j = j-1
index = index + 1
}
}
}
}
}
}
Output :
Array size : 3
user array of size 3
2
6
5
-----------------------
Enter index sum to find in array : 11
Sum which needs to find : 11
Element of Array :
2
6
5
Element of SubArray :
6
5
Index value is : {2 - 3}
No comments:
Post a Comment