LeetCode118. 杨辉三角 119. 杨辉三角 II 217. 存在重复元素 219. 存在重复元素 II

 

118. 杨辉三角 

给定一个非负整数 numRows生成「杨辉三角」的前 numRows 行。

「杨辉三角」中,每个数是它左上方和右上方的数的和。

 

示例 1:

输入: numRows = 5
输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例 2:

输入: numRows = 1
输出: [[1]]
package com.example.shuzu;

import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

public class LeetCode118 {

    @Test
    public void test(){
        int numRows = 5;

        System.out.printf(String.valueOf(generate(numRows)));
    }

    public List<List<Integer>> generate(int numRows) {
        List<List<Integer>> ret = new ArrayList<List<Integer>>();
        for(int i = 0;i<numRows;++i){
            List<Integer> row = new ArrayList<Integer>();
            for(int j = 0; j<= i;++j){
                if(j==0 ||j == i){
                    row.add(1);
                }else{
                    row.add(ret.get(i-1).get(j-1) + ret.get(i - 1).get(j));
                }
            }
            ret.add(row);
        }
        return ret;
    }
}

119. 杨辉三角 II

给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。

在「杨辉三角」中,每个数是它左上方和右上方的数的和。

 

示例 1:

输入: rowIndex = 3
输出: [1,3,3,1]

示例 2:

输入: rowIndex = 0
输出: [1]

示例 3:

输入: rowIndex = 1
输出: [1,1]

 

package com.example.shuzu;

import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

public class LeetCode119 {

    @Test
    public void test(){
        int numRows = 5;

        System.out.printf(String.valueOf(getRow(numRows)));
    }

    public List<Integer> getRow(int rowIndex) {
        List<List<Integer>> C = new ArrayList<List<Integer>>();
        for(int i = 0; i<= rowIndex; ++i){
            List<Integer> row = new ArrayList<Integer>();
            for(int j = 0; j<=i;++j){
                if(j==0||j==i){
                    row.add(1);
                }else{
                    row.add(C.get(i - 1).get(j-1)+ C.get(i-1).get(j));
                }
            }
            C.add(row);
        }
        return C.get(rowIndex);

    }
}

217. 存在重复元素

给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。

示例 1:

输入:nums = [1,2,3,1]

输出:true

解释:

元素 1 在下标 0 和 3 出现。

示例 2:

输入:nums = [1,2,3,4]

输出:false

解释:

所有元素都不同。

示例 3:

输入:nums = [1,1,1,3,3,4,3,2,4,2]

输出:true

 

package com.example.shuzu;

import org.junit.Test;

import java.util.Arrays;

public class LeetCode217 {

    @Test
    public void test(){
        int[] nums = {1,2,3,1};

        System.out.printf(String.valueOf(containsDuplicate(nums)));
    }

    public boolean containsDuplicate(int[] nums) {

        Arrays.sort(nums);
        int n = nums.length;
        for(int i = 0; i<n - 1;i++){
            if(nums[i] == nums[i+1]){
                return true;
            }
        }
        return false;
    }
}

219. 存在重复元素 II

给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。

示例 1:

输入:nums = [1,2,3,1], k = 3
输出:true

示例 2:

输入:nums = [1,0,1,1], k = 1
输出:true

示例 3:

输入:nums = [1,2,3,1,2,3], k = 2
输出:false

 

package com.example.shuzu;

import org.junit.Test;

import java.util.HashMap;
import java.util.Map;

public class LeetCode219 {
    @Test
    public void test(){
        int[] nums = {1,2,3,1};
        int k = 3;

        System.out.printf(String.valueOf(containsNearbyDuplicate(nums,k)));
    }

    public boolean containsNearbyDuplicate(int[] nums, int k) {

        Map<Integer,Integer> map = new HashMap<Integer,Integer>();
        int length = nums.length;
        for (int i = 0; i<length;i++){
            int num = nums[i];
            if(map.containsKey(num) && i - map.get(num) <= k){
                return true;
            }
            map.put(num,i);
        }
        return false;
    }
}

 

posted @ 2026-01-07 15:30  雨花阁  阅读(1)  评论(0)    收藏  举报