送分题
java版本:
class Solution {
public List<Integer> luckyNumbers (int[][] matrix) {
int m=matrix.length;
int n=matrix[0].length;
int[] arr=new int[m];
List<Integer> list=new ArrayList<Integer>();
int min=matrix[0][0];
for(int i=0;i<m;i++){
min=matrix[i][0];
for(int j=0;j<n;j++){
if(matrix[i][j]<min){
min=matrix[i][j];
arr[i]=j;
// 每一行 最小值 loc
}
}
}
int max_loc;
int max;
for(int j=0;j<n;j++){
max=matrix[0][j];
max_loc=0;
for(int i=0;i<m;i++){
if(matrix[i][j]>max){
max=matrix[i][j];
max_loc=i;
}
}
for(int i=0;i<m;i++){
if(j==arr[i] && max_loc==i){
list.add(matrix[max_loc][j]);
}
}
}
return list;
}
}
剑指offer 38:字符串的排列
类似于全排列+支持相同字符
Go版本:
func permutation(s string) []string {
var used []bool;
var res []string;
// go字符串连接用+
// java需要stingbuffer
for i:=0;i<len(s);i++{
used=append(used,false);
}
t := []byte(s)
sort.Slice(t, func(i, j int) bool { return t[i] < t[j] })
str:=""
// quanpailie(str,t,used[:],res[:]);
var quanpailie func(string)
quanpailie = func(str string) {
if len(str)==len(s){
res=append(res,str);
// fmt.Println(res);
}
for i:=0;i<len(s);i++{
if i>0 && t[i]==t[i-1] && used[i-1]==false{
continue;
}
if(used[i]==false){
used[i]=true;
str+=string(t[i]);
quanpailie(str);
str=str[:len(str)-1];
used[i]=false;
}
}
}
quanpailie(str);
// fmt.Println(res);
return res;
}
// func quanpailie(str string,s []byte,used []bool,res []string ){
// }
网友评论