Home » Interview Questions » Interviews » Story Details
Printable Version

Interview Question: Shift elements in the array forward by k places

by Kamal Rawat on Feb 08, 2012

Given an array of m elements, write code to shift all elements forward by k positions (Size of array is sufficient to make the shift).
Comments: 0    Views: 468

MCN Professionals | Interview Question of the day

MCN Professionals is starting Industrial Training for MCA-2012 Batch. Have a look at our Industrial Training Program and Course Details.
-----------------------------------------------------------------------------------------------------------------------------------------

Today's Question:
Given an array of m elements and an integer k ( total size of array >= m+k), . Write code to shift all the elements of array forward by k positions. For example: If k = 2 and the Input array is as given below, the the output array should be:
rotating array.jpg
The extra spaces will have random (garbage) elements, which we are not concerned about.
Solution:

We have done a similar (but not this) question about rotating an array around a pivot earlier. In this case we are just shifting the elements. One wrong code to shift the elements (and my motivation to write this article, because many of my students attempted it like this in their first attempt) is as below:
// Wrong code
for (int i=0; i<m; i++)
    arr[i+k] = arr[i];
This is wrong because, we will loose the element at (i+k)'th position for ever.

The problem is because we are shifting the elements starting from zero index. We should shift the elements from the last (m-1) index. So the write code is:
void shiftElements(int *arr, int m, int k)
{
    for (int i=m-1; i>=0; i--)
        arr[i+k] = arr[i];
}
The responsibility, of ensuring that arr has sufficient space lies with the caller of the function (like when you call library function like strcpy, it is your responsibility to ensure that the target array is big enough to store the result).

Time Complexity: O(n)
Extra Space: O(1)

One more solution (not so efficient) can be to shift one element at a time. But that will increase the time complexity to O(n2).

---------------------------------------------------------------------------

Interview Questions Archive:

         To see all the questions in the category Click Here...


Post a Comment
*
DevExpress PowerBuilder Web Development Windows Development Languages Software Engineering Databases
iPhone Architecture Secutiry UML & Modeling Operating Systems Networking Testing
Graphics Design Project Management Hardware Open Source Games Development Business Intelligence Visual Studio LightSwitch 2011
MonoDevelop Visual Studio 2010 ASP.NET HTML, DHTML XML PHP JavaScript
Silverlight Web Services WCF Windows Forms WPF Windows Services Dynamic Link Libraries
ActiveX COM, DCOM, ATL C# VB.NET C++ F# Java
Pascal SQL Server Oracle DB2 MS-Access Windows Servers Windows
Linux Unix SAP LINQ .NET Framework ADO.NET Reporting
Crystal Reports SQL Server Reporting Services Igenda Reports Active Reports Adobe Fireworks Arrays & Collections Hosting
Future Trends Android Windows Phone Smart Devices Business M&A Investment & Funding
Web Browsers Internet Explorer Firefox Safari Common Entrepreneurs Students
Consulting Wiki Gadgets MobileMe iCloud iOS Social Media
Facebook Twitter LinkedIn Google+ Microsoft Kinect XBox
Wii Playstation DirectX i OS OS X CIO, CTO, CEO Windows 8
Web Design Expression Blend 4 Photoshop CS5 Creative Suite 5.5 Expression Web 4 Expression Studio 4 Creative Suite® 5.5 Design
Creative Suite 5.5 Web Creative Suite 5.5 Production Startups Funding M&A Laptops Smart Phones
Desktops Cameras & Camcorders Netbooks Tablets Virtualization Microsoft Surface WordPress
Software Products Cloud Computing Current Affairs Technology TV TV
Earnings XAML E-Commerce MonoTouch Mono for Android Deals Electronics
Mobile Phone Laptop Tablet Book Computer Press Releases Reviews
Products Books Companies Windows Azure SQL Azure Interviews Mac
Web Browsers Symbian Windows Forms WPF Windows Services HTML 5 Office 365
SharePoint 2010 Exchange Server Adobe Visual Studio 2012 iPad Flex / Flash Games
Windows 9
X
 Login
Please login to submit a new post, reply and edit exiting posts, see user profiles, and access more features. If you are not a registered member, Register here.
User Id / Email:
Password:  
Forgot Password | Forgot UserName