소개
기술 면접에서는 배열 조작 문제가 자주 발생합니다. 이번 게시물에서는 0이 아닌 요소의 순서를 유지하고 모든 0을 오른쪽으로 푸시하면서 0이 아닌 값을 왼쪽으로 이동하는 일반적인 문제를 다루겠습니다.
기본 배열 개념에 익숙하지 않다면 Java의 배열 기본 이해: 속도를 높이기 위한 간단한 가이드를 확인하는 것이 좋습니다!
문제 설명
정수 배열이 주어지면 0이 아닌 모든 요소를 왼쪽으로 이동하고 모든 0 요소를 오른쪽으로 밀어내는 것이 임무입니다. 0이 아닌 요소의 상대적 순서는 유지되어야 합니다.
예:
Input: [1, 2, 0, 3, 0, 0, 4, 3, 2, 9] Output: [1, 2, 3, 4, 3, 2, 9, 0, 0, 0]
접근하다
배열을 통한 단일 패스를 사용하여 O(n) 시간 내에 이 문제를 해결할 수 있으며, 솔루션의 공간 복잡도는 O(1)입니다.
- 포인터를 사용하여 0이 아닌 다음 요소의 색인을 추적하세요.
- 배열을 반복하여 포인터의 인덱스에 0이 아닌 요소를 배치합니다.
- 0이 아닌 요소가 배치될 때마다 포인터를 증가시킵니다.
코드
package arrays; // Time Complexity - O(n) // Space Complexity - O(1) public class ShiftNonZeroValuesToLeft { private void shiftValues(int[] inputArray) { /* Variable to keep track of index position to be filled with Non-Zero Value */ int pointer = 0; // If value is Non-Zero then place it at the pointer index for (int i = 0; i <h2> 설명 </h2>
shiftValues 메소드는 입력 배열을 반복합니다.
0이 아닌 값이 발견되면 현재 포인터 인덱스에 배치되고 현재 인덱스의 요소는 0으로 대체됩니다.
그런 다음 0이 아닌 요소의 다음 위치를 추적하기 위해 포인터가 증가합니다.
올바른 위치(즉, 포인터 인덱스)에 이미 0이 아닌 값이 있는 경우 메서드는 교체를 하지 않고 단순히 포인터를 증가시킵니다.
이 작업은 전체 배열이 처리될 때까지 계속됩니다.
시간과 공간의 복잡성
시간 복잡도: O(n), 여기서 n은 배열의 길이입니다.
공간 복잡도: O(1), 어레이를 제자리에서 수정하고 있기 때문입니다.
엣지 케이스
모두 0: 배열에 모두 0이 포함되어 있으면 변경되지 않습니다.
0 없음: 0이 없으면 요소의 원래 순서가 유지됩니다.
빈 배열: 함수는 문제 없이 빈 배열을 처리해야 합니다.
결론
이 문제는 코딩 인터뷰에서 배열 조작 기술과 그 효율성을 이해하는 것이 얼마나 중요한지 보여줍니다. 이러한 문제를 마스터하면 문제 해결 능력이 크게 향상될 수 있습니다!
위 내용은 0이 아닌 값을 왼쪽으로 이동: 일반적인 배열 인터뷰 문제-1의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Java의 핵심 기능에는 플랫폼 독립성, 객체 지향 디자인 및 풍부한 표준 라이브러리가 포함됩니다. 1) 객체 지향 설계는 다형성 기능을 통해 코드를보다 유연하고 유지 관리 할 수있게합니다. 2) 쓰레기 수집 메커니즘은 개발자의 메모리 관리 부담을 방해하지만 성능 문제를 피하기 위해 최적화해야합니다. 3) 표준 라이브러리는 컬렉션에서 네트워크까지 강력한 도구를 제공하지만 코드를 간결하게 유지하려면 데이터 구조를 신중하게 선택해야합니다.

예, Javacanruneverywhereduetoits "WriteOnce, Runanywhere"Philosophy.1) JavacodeiscompileDintoplatform-IndependentBecode.2) ThejavavirtualMachine (JVM) intermachineintomachine-specificinstructionstruntime, 허용

Java의 주요 기능은 다음과 같습니다. 1) 객체 지향 설계, 2) 플랫폼 독립성, 3) 쓰레기 수집 메커니즘, 4) 풍부한 라이브러리 및 프레임 워크, 5) 동시성 지원, 6) 예외 처리, 7) 연속 진화. Java의 이러한 기능은 효율적이고 유지 관리 가능한 소프트웨어를 개발하기위한 강력한 도구입니다.

javaachievesplatflatforminceptenceThoughbyTecodeandthejvm.1) CodeIsCompileDintobyTecode, notMachineCode.2) thejvminterpretsByTecodeonAnyPlatform, "writeOnce, runanywhere"를 보장합니다. "

Java는 플랫폼 독립성으로 인해 엔터프라이즈 수준의 응용 프로그램에서 널리 사용됩니다. 1) 플랫폼 독립성은 JVM (Java Virtual Machine)을 통해 구현되므로 JAVA를 지원하는 모든 플랫폼에서 코드가 실행될 수 있습니다. 2) 크로스 플랫폼 배포 및 개발 프로세스를 단순화하여 유연성과 확장 성을 더 많이 제공합니다. 3) 그러나 성능 차이 및 타사 라이브러리 호환성에주의를 기울이고 순수한 Java 코드 사용 및 크로스 플랫폼 테스트와 같은 모범 사례를 채택해야합니다.

javaplaysaSignificantroleiniotduetoitsplatformincentence.1) itallowscodetobewrittenonceandevices.2) java'secosystemprovidesusefullibrariesforiot.3) itssecurityfeaturesenhanceiotiotsystemsafety.hormormory.hormory.hustupletety.houghmormory

thejava.nio.filepackage.1) withsystem.getProperty ( "user.dir") andtherelativeatthereplattHefilePsiple.2) thepathtopilebtoafne 컨버터링 주제


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기