剑指 Offer 47. 礼物的最大价值
题目(动规题目)
思路
代码
class Solution {
public int maxValue(int[][] grid) {
int a=grid.length,b=grid[0].length;
int[][] dp=new int[a+1][b+1];
for(int i=1;i<dp.length;i++){
for(int j=1;j<dp[0].length;j++){
dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1])+grid[i-1][j-1];
}
}
return dp[a][b];
}
}
class Solution:
def maxValue(self, grid: List[List[int]]) -> int:
a,b=len(grid),len(grid[0])
for j in range(1,b):
grid[0][j]+=grid[0][j-1]
for i in range(1,a):
grid[i][0]+=grid[i-1][0]
for i in range(1,a):
for j in range(1,b):
grid[i][j]+=max(grid[i-1][j],grid[i][j-1])
return grid[a-1][b-1]
剑指 Offer 50. 第一个只出现一次的字符
题目
思路
使用hashmap存储字符,对于首次出现字符存储True,对于多次出现的字符存储False
代码
class Solution {
public char firstUniqChar(String s) {
HashMap<Character,Integer> map=new HashMap<>();
char[] arr=s.toCharArray();
for(int i=0;i<arr.length;i++){
if(!map.containsKey(arr[i]))
map.put(arr[i],1);
else{
map.put(arr[i],map.get(arr[i])+1);
}
}
for(int i=0;i<arr.length;i++){
if(map.get(arr[i])==1)
return arr[i];
}
return ' ';
}
}
class Solution:
def firstUniqChar(self, s: str) -> str:
map1={}
for i in range(len(s)):
if s[i] not in map1:
map1[s[i]]=True
else:
map1[s[i]]=False
for i in range(len(s)):
if map1[s[i]]:
return s[i]
return ' '