1、二维数组的查找
问题:在一个二维数组中,每行都从左到右递增顺序,每一列都按从上到下递增,从这个二维数组查找一个数是否存在。
int find_one(int a[][4],int N,int M,int value) { int i=M-1; int j=0; while(1) { if(a[j][i]==value) return value; else if(a[j][i]>value) { i--; if(i<0) return 0; } else if(a[j][i]<value) { j++; if(j>=N) return 0; } } }
2、字符串替换空格
问题:将字符串中的空格替换成"%20"
//重新申请一个字符串 string swap_empty1(string &str) { string new_str; for(auto &c:str) { if(c==' ') new_str+="%20"; else new_str.push_back(c); } return new_str; } //原字符串上修改 string swap_empty2(string &str) { int n_count=0; for(auto &c:str) { if(c==' ') n_count++; } int length=str.size(); int new_length=length+n_count*2; str.resize(new_length); int i=length-1,j=new_length-1; while(i) { if(str[i]==' ') { j=j-2; str[j]='%'; str[j+1]='2'; str[j+2]='0'; i--; j--; } else { str[j]=str[i]; j--;i--; } } return str; }
3、两个排序数组A,B,将B的所有数插入到A中且所有数是排序的
vector<int> add_array(vector<int>arr1,vector<int>arr2) { int length1=arr1.size(); int length2=arr2.size(); int add_length=length1+length2; arr1.resize(add_length); int i=length1-1,j=length2-1,k=add_length-1; while(i!=0) { if(arr1[i]>arr2[j]) { arr1[k]=arr1[i]; i--; k--; } else { arr1[k]=arr2[j]; j--; k--; if(j<0) break; } } while(j>=0) { arr1[k]=arr2[j]; j--; k--; } return arr1; }