将一个字符串转化为整数
while(*s >= '0' && *s <= '9'){
sum = sum * 10 + (*s - '0');
s++;
}
统计字符串中字符出现的次数(hash)
新建一个数组,利数组的索引来确定位置,值来统计次数
int res[26] = {0};
for(int i = 0; i < n; i++){
res[s[i]-'a']++;
}
如何取出一个整数的每一位
首先定一个新的数组来保存,依次取出个位十位百位…倒置数组。
while(num<9){
nums[numSize++] = num % 10;
num = (num - num%10) /10;
}
nums[numSize++] = num;
for(int left=0, right=numSize-1;left<right;left++,right--){
int t = nums[left];
nums[left] = nums[right];
nums[right] = t;
}
qsort 函数
void qsort(void* base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));
Para1 待排序数组,排序之后的结果仍放在这个数组中
Para2 数组中待排序元素数量
Para3 各元素的占用空间大小(单位为字节)
Para4 指向函数的指针,用于确定排序的顺序(需要用户自定义一个比较函数)
常用的CMP函数
int cmp_int(const void* a , const void* b)
{
return *(int *)a - *(int *)b;
}
int cmp_char(const void* _a , const void* _b)
{
return *(char *)a - *(char *)b;
}
int cmp_string(const void* _a , const void* _b)
{
char* a = (char*)_a;
char* b = (char*)_b;
return strcmp(a,b);
}
int cmp_double(const void* _a , const void* _b)
{
double* a = (double*)_a;
double* b = (double*)_b;
return *a > *b ? 1 : -1;
}
利用哈希映射时出现负数怎么办
将数组的范围整体右移
nums[i] % INT_MAX + 10000
快速排序
void swap(int *a, int *b)
{
if(a==b)
return;
*a = *a^*b;
*b = *a^*b;
*a = *a^*b;
}
void quicksort(int *nums,int low,int high)
{
if(low >= high)
return;
int mid = nums[low];
int left = low;
int right = high;
while(left < right)
{
while(left<right && mid <= nums[right])
right--;
while(left<right && mid >= nums[left])
left ++;
if(left == right)
break;
swap(&nums[left],&nums[right]);
}
swap(&nums[low],&nums[left]);
quicksort(nums,low,left-1);
quicksort(nums,left+1,high);
}
int* MySort(int* arr, int arrLen, int* returnSize ) {
// write code here
*returnSize = arrLen;
if(arrLen <=1)
return arr;
quicksort(arr,0,arrLen-1);
return arr;
}
class Solution:
def getLeastNumbers(self, arr: List[int]) -> List[int]:
def quick_sort(arr,l,r):
if l >= r: return
i, j = l, r
while i < j:
while i < j and arr[j] >= arr[l]: j-=1
while i < j and arr[i] <= arr[l]: i+=1
arr[i], arr[j] = arr[j], arr[i]
arr[l], arr[i] = arr[i], arr[l]
quick_sort(arr, l, i-1)
quick_sort(arr, i+1, r)
quick_sort(arr, 0, len(arr)-1)
return arr