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;
}
}
浙公网安备 33010602011771号