一些处理技巧

将一个字符串转化为整数

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值