leetcode 알고리즘 문제풀이(Java 버전)-11 - 욕심대법
1. 전체 배열 변형(귀속)
제목 설명
Given a collection of numbers that might contain duplicates, return all possible unique permutations. For example,[1,1,2]have the following unique permutations:[1,1,2],[1,2,1], and[2,1,1].
생각
코드
import java.util.ArrayList;
import java.util.Arrays;
public class Solution {
public ArrayList> permuteUnique(int[] num) {
ArrayList> res=new ArrayList<>();
int len=num.length;
if(num==null||len==0){
return res;
}
boolean [] used=new boolean[len];
ArrayList list=new ArrayList<>();
Arrays.sort(num);
dfs(list,num,used,res);
return res;
}
public void dfs(ArrayList list,int [] num,boolean [] used,ArrayList> res){
if(list.size()==num.length){
res.add(new ArrayList(list));
return ;
}
for(int i=0;i0&&num[i]==num[i-1]&&!used[i-1]){// , ,
// list , 。。。 ,
continue;
}
if(!used[i]){
used[i]=true;
list.add(num[i]);
dfs(list,num,used,res);
list.remove(list.size()-1);
used[i]=false;
}
}
}
}
욕심
제목 설명
Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at that position. Determine if you are able to reach the last index. For example:A =[2,3,1,1,4], returntrue. A =[3,2,1,0,4], returnfalse
생각
코드
public class Solution {
public boolean canJump(int[] A) {
int maxlen=A[0];
for(int i=1;i
3. 동적 기획 or 욕심
제목 설명
Given an array of non-negative integers, you are initially positioned at the first index of the array. Each element in the array represents your maximum jump length at that position. Your goal is to reach the last index in the minimum number of jumps. For example:Given array A =[2,3,1,1,4] The minimum number of jumps to reach the last index is2. (Jump1step from index 0 to 1, then3steps to the last index
생각
코드
public class Solution {
public int jump(int[] A) {
int [] dp=new int[A.length];//
for(int i=0;i
생각 2
i~furthest_pre
에서 구역의 점에서 도달할 수 있는 최대 위치(furthest_cur
, 현재 위치의 이전 위치(또는 구역)에서 도달할 수 있는 최대 위치(furthest_pre
, 그리고 걷는 걸음 수입니다.furthest_cur
아직 step++가 없을 때 코드를 구체적으로 결합하면 도착할 수 있으나 아직 가지 않은 상태이다.furthest_pre
사이에 구역이 구성되어 있습니다. 그리고 우리는 한 칸 한 칸 걷기 시작합니다. 한 번 걸을 때마다 현재 이 구역이 갈 수 있는 최대 위치(furthest_cur
를 새로 고칩니다.만약 시작 위치에서 furthest_pre
까지 갔다면 우리도 가장 큰 furthest_cur
을 갱신했을 것이다. 만약furthest_cur
이 결승점보다 크다면 축하한다!한 번만 더 뛰면 결승점에 도착하잖아!한 걸음 해도 돼요!그리고 결승점에 도달할 때까지 상술한 동작을 반복합니다.furthest_pre
까지 갈 수 있다면 한 걸음 그 앞의 어느 위치까지 가서 다음 점프를 실행할 수 있을 것이다furthest_cur
.4 1 6 9 7 4 5 0 6 8 1 2 3 5 8 0 2 1 2
코드
public class Solution {
public int jump(int[] A) {
int len=A.length;
if(len==0||A==null){
return 0;
}
int furthest_cur=0;
int furthest_pre=0;
int steps=0;
for(int i=0;i=len){
return steps;
}
if(i>furthest_pre){
furthest_pre=furthest_cur;
steps++;
}
furthest_cur=Math.max(furthest_cur,A[i]+i);
}
return steps;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.