8.31 텐 센트 면접

8.31 텐 센트 면접
두 개의 산법 문제.
한 그룹의 숫자 를 입력 하면 출력 순위 가 두 번 째 로 큰 숫자 입 니 다.언어 자체 의 정렬 함 수 를 사용 하지 않도록 합 니 다.
요구: 한 번 에 옮 겨 다 니 기
사고 분석.
두 번 째 k 대 요 소 를 찾 으 려 면 작은 지붕 더 미 를 유지 하 는 것 을 배 워 야 한다. 만약 에 쌓 인 지붕 보다 큰 요소 가 있 으 면 이 를 쌓 아 두 는 것 이다. 여 기 는 두 번 째 요소 가 비교적 간단 하 다.
코드 구현
public int getSecond(int[] nums) {
     
        //a      b       
        int a = Integer.MIN_VALUE, b = Integer.MIN_VALUE;

        for (int i = 0; i < nums.length; i++) {
     
            if (nums[i] > a) {
     b = a; a = nums[i];}
            else if (nums[i] > b) b = nums[i];
        }
        return b;
    }

두 개의 정수 n 과 m 를 입력 하고 수열 1, 2, 3..............................................................................
사고 분석.
List<List<Integer>> res = new ArrayList<>();
List<Integer> list = new ArrayList<>();
//    index   n     m   
public void dfs(int index, int m, int n) {
     
    if (m == 0) {
     
        res.add(new ArrayList<>(list));
    } else {
     
        for (int i = index; i <= m && i <= n; i++) {
     
            list.add(i);
            dfs(i + 1, m - i, n);
            list.remove(list.size() - 1);
        }
    }
}

두 번 째 문제 의 유형 은 배열 에서 조건 을 만족 시 키 는 몇 개의 수 를 꺼 내 는 것 으로 바 뀔 수 있다. 비슷 한 문 제 는?
  • 77. 그룹
  • 46. 전체 배열
  • 47. 전열 II
  • 좋은 웹페이지 즐겨찾기