LeetCode 주간 경기 202
전체적으로 말 하면 이 문 제 는 그런대로 괜 찮 은 편 이 고 난이도 가 적당 하 다.
세 개의 홀수 가 연속 되 는 배열 이 존재 합 니 다.
제목 의 대 의 는 세 개의 연속 적 인 홀수 가 있 는 지 를 확인 하 는 배열 을 정 하 는 것 이다.
이것 은 출석 문제 라 고 할 수 있 습 니 다.기록 을 한 번 훑 어보 면 됩 니 다.
class Solution {
public boolean threeConsecutiveOdds(int[] arr) {
int flag = 0;
int n = arr.length;
for(int i = 0;i < n;i++) {
if(arr[i] % 2 == 1) {
flag++;
}else {
flag = 0;
}
if(flag == 3) {
return true;
}
}
return false;
}
}
배열 의 모든 요 소 를 동일 하 게 하 는 최소 조작 수
제목 의 대 의 는 하나의 배열 을 정 하고 매번 한 쌍 의 요 소 를 선택 하여 그 중 하 나 를 추가 하고 다른 하 나 를 줄 일 수 있다 는 것 이다.몇 번 을 조작 한 후에 배열 의 요 소 는 모두 같 습 니까?
이 문제 도 어렵 지 않다.매번 하 나 를 더 하고 다른 하 나 를 줄 이 며 배열 의 총 화 는 변 하지 않 는 다 는 것 을 알 게 되 었 다.최종 결 과 는 틀림없이 평균치 일 것 이다.
배열 이 무 작위 로 주어진 다 면 모든 요소 가 평균 값 차이 까지 의 절대 치 를 한 번 훑 어보 고 마지막 에 더하기 와 나 누 기 2 가 답 이다.
하지만!!
이 문제 에서 배열 의 요 소 는 규칙 이 존재 한다.즉 a i=2 i−1(1≤i≤n)ai=2i-1\\(1≤i≤n)ai=2i-1(1≤i≤n)즉,이 서열 은 1,3,5,7.원소 개수 에 따라 짝 을 나 누 어 토론 할 수 있다.
홀수
a v g = a ⌊ n 2 ⌋ = n a n s = ∑ i = 1 ⌊ n 2 ⌋ ( a v g − a i ) = ∑ i = 1 ⌊ n 2 ⌋ ( n − 2 i + 1 ) avg = a_{\left \lfloor \frac{n} {2}\right \rfloor } = n\\ ans = \sum^ {\left \lfloor \frac{n} {2}\right \rfloor} _ {i = 1} (avg - a_i)\\ \ =\sum^ {\left \lfloor \frac{n} {2}\right \rfloor} _ {i = 1} (n - 2i+1) avg=a⌊2n⌋=nans=i=1∑⌊2n⌋(avg−ai) =n-2i+1 은 등차수열 구 와 공식 을 이용 하여 다음 과 같이 다음 과 같이 다음 과 같이 다음 과 같이 다음 과 같이 다음 과 같이 다음 과 같이 다음 과 같이 정의 한다.a n s=(⌊n 2⌋+1)∗n 2⌊n n 2⌋ans=(\\\\\\\\lflor\\\\\frac{n}{2}\\\\\\\\\\\\\\\\\\\\lflor\\\\\\\\\frac{n}\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\∗⌊2n⌋
짝수
a v g = a n 2 + a n 2 + 1 2 = n − 2 a n s = ∑ i = 1 n 2 ( a v g − a i ) = ∑ i = 1 n 2 ( n − 2 i − 1 ) avg = \frac{a_{\frac{n} {2}} + a_{\frac{n} {2} + 1}} {2} = n - 2\\ ans= \sum^ {\frac{n} {2}} _ {i = 1} (avg - a_i)\\ \ =\sum^ {\frac{n} {2} }_ {i = 1} (n - 2i-1) avg=2a2n+a2n+1=n−2ans=i=1∑2n(avg−ai) =i=1∑2n(n−2i−1)등차 수열 구 와 공식 을 이용 하여 a n s=n 2∗n 2 ans=\frac{n}{2}*\frac{n}{2}\\ans=2 n∗2n a n s=n 2 4 ans=\frac{n^2}{4}ans=4n2
public class Solution2 {
int minOperations(int n) {
if(n % 2 == 1) {
return (1 + n / 2) * (n / 2);
}else {
return n * n / 4;
}
}
}
두 공 사이 의 자력
제목 의 대 의 는 n 개의 바구니 와 m 개의 작은 공(n>=m)을 정 하 는 것 이다.바구니 마다 1 차원 좌표 가 있 고 두 개의 작은 공의 자력 치 는|pi-pj|이 며 p 는 작은 공이 있 는 바구니 의 위치 이다.--최소 자력 치 는 최대 얼마 인가.
이 문 제 는 올 라 와 서 최소 치 를 구 하 는 것 이 가장 큰 것 을 보 았 는데,그 큰 확률 로 2 점 의 답 을 놓 칠 수 없 었 다.
우 리 는 이 최소 자력 값 을 직접 2 분 한 후에 매번 옮 겨 다 니 며 놓 을 수 있 는 지 를 검사 할 수 있다.
2 점 전에 모든 바구니 에 순 서 를 매 기 는 것 을 기억 하 세 요.
복잡 도:O(n l o g(m a x(p i)))O(nlog(max(pi))) O(nlog(max(pi)))
class Solution {
private boolean check(int k,int[] p,int m) {
int n = p.length;
int flag = p[0];
m--;
for(int i = 1;i < n;i++) {
if(p[i] - flag >= k) {
m--;
flag = p[i];
}
if(m == 0) {
return true;
}
}
return false;
}
public int maxDistance(int[] position, int m) {
Arrays.sort(position);
int n = position.length;
int l = 0,r = position[n - 1];
while(l < r) {
int mid = (l + r) / 2 + 1;
if(check(mid,position,m)) {
l = mid;
}else {
r = mid - 1;
}
}
return l;
}
}
귤 N 개 먹 은 최소 일수
제목 의 대 의 는 귤 n 개 를 정 하고 매일 세 가지 먹 는 방법 중 하 나 를 선택 할 수 있다 는 것 이다.
제목 을 번역 하면 얻 을 수 있 습 니 다.
세 가지 동작 중 하 나 를 선택 할 때마다 숫자 n 을 지정 합 니 다.
최소 몇 번 조작 하면 숫자 를 0 으로 줄 일 수 있 냐 고 물 었 다.
이렇게 보면 이것 은 수학 상의 문제 다.만약 에 이 숫자의 범위 가 비교적 작고 선형 시간 안에 해결 할 수 있다 면 우 리 는 동적 계획 으로 이 문 제 를 해결 할 수 있다.
그러나 문제 에서 이 숫자 는 규모 가 매우 커서 2*109 가 있 고 선형 시간 에 해결 할 수 없고 저장 할 수 없다.
그럼 검색 도 좋 은 방법 이 야.그러나 검색 의 복잡 도가 매우 높 기 때문에 우 리 는 그것 에 대해 일련의 최적화 가 필요 하 다.
class Solution {
static int ans = 1 << 30;
static HashMap<Integer,Integer> map = new HashMap();
private void dfs(int n,int k) {
if(k >= ans) {
return;
}
if(map.containsKey(n)) {
if(map.get(n) <= k) {
return;
}
}
map.put(n, k);
if(n == 0) {
ans = k;
return;
}
if(n % 3 == 0) {
dfs(n / 3,k + 1);
}
if(n % 2 == 0) {
dfs(n / 2,k + 1);
}
dfs(n - 1,k + 1);
}
public int minDays(int n) {
map.clear();
ans = 1 << 30;
dfs(n,0);
return ans;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법원래 Turobolinks란? Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고, 이동한 페이지를 Ajax에서 가져옵니다. 그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.