力扣(LeetCode)刷题,简单题(第5期)
生活随笔
收集整理的這篇文章主要介紹了
力扣(LeetCode)刷题,简单题(第5期)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
第1題:二進制中1的個數
第2題:打印從 1 到最大的 n 位十進制數
第3題:刪除鏈表的節點
第4題:調整數組順序使奇數位于偶數前面
第5題:鏈表中倒數第K個節點
第6題:反轉鏈表
第7題:二叉樹的鏡像
第8題:順時針打印矩陣
第9題:數組中出現次數超過一半的數
第10題:最小的K個數
力扣(LeetCode)定期刷題,每期10道題,業務繁重的同志可以看看我分享的思路,不是最高效解決方案,只求互相提升。
第1題:二進制中1的個數
試題要求如下:
回答(C語言):
int hammingWeight(uint32_t n) {int cou=0;while(n>0){if(n%2==1){ //注意是二進制cou++;}n/=2;}return cou;
}
運行效率如下所示:
第2題:打印從 1 到最大的 n 位十進制數
試題要求如下:
回答(C語言):
/*** Note: The returned array must be malloced, assume caller calls free().*/
int* printNumbers(int n, int* returnSize){int cou=(int)pow(10,n)-1;int* data_buf=(int*)malloc(sizeof(int)*(cou));for(int i=0;i<cou;i++)data_buf[i]=i+1;*returnSize=cou;return data_buf;
}
?運行效率如下所示:
第3題:刪除鏈表的節點
試題要求如下:
回答(C語言):
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/struct ListNode* deleteNode(struct ListNode* head, int val){struct ListNode *p=head,*q=p->next;if(head->val==val) return head->next;while(q){if(q->val==val){p->next=q->next;free(q);return head;}else{p=q;q=q->next;}}return head;
}
運行效率如下所示:
第4題:調整數組順序使奇數位于偶數前面
試題要求如下:
回答(C語言):
/*** Note: The returned array must be malloced, assume caller calls free().*/
int* exchange(int* nums, int numsSize, int* returnSize){int i=0,j=numsSize-1;int num=0;while(i<j){if(nums[i]%2==0 && nums[j]%2!=0){num=nums[i];nums[i]=nums[j];nums[j]=num;}if(nums[i]%2!=0)i++;if(nums[j]%2==0)j--; }*returnSize=numsSize;return nums;
}
運行效率如下所示:
第5題:鏈表中倒數第K個節點
試題要求如下:
回答(C語言):
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/struct ListNode* getKthFromEnd(struct ListNode* head, int k){struct ListNode* p=head,*q=p;int i=0;while(q!=NULL){q=q->next;i++;}i=i-k;while(i--){p=p->next; }return p;
}
運行效率如下所示:
第6題:反轉鏈表
試題要求如下:
回答(C語言):
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/struct ListNode* reverseList(struct ListNode* head){struct ListNode *cur = NULL,*pre = head,*t;while (pre != NULL) {t = pre->next;pre->next = cur;cur = pre;pre = t;}return cur;
}
運行效率如下所示:
第7題:二叉樹的鏡像
試題要求如下:
回答(C語言):
/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/struct TreeNode* mirrorTree(struct TreeNode* root){if (root==NULL) {return NULL;}struct TreeNode* right = mirrorTree(root->right);struct TreeNode* left = mirrorTree(root->left);root->left = right;root->right = left;return root;
}
運行效率如下所示:
第8題:順時針打印矩陣
試題要求如下:
回答(C語言):
/*** Note: The returned array must be malloced, assume caller calls free().*/
int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize){if(matrixSize==0){*returnSize=0;return 0;}int cycle=0,row=0,column=0,k=0;*returnSize=matrixSize*(*matrixColSize);int *res=malloc(*returnSize * sizeof(int));while(k<*returnSize){res[k++]=matrix[row][column];if(row==cycle&&(column<*matrixColSize-cycle-1)) column++;else if((column==*matrixColSize-cycle-1)&&(row<matrixSize-cycle-1)) row++;else if((row==matrixSize-cycle-1)&&column>cycle) column--;else if(column==cycle&&(row>cycle+1)) row--;else{cycle++;column++;}}return res;
}
運行效率如下所示:
第9題:數組中出現次數超過一半的數
試題要求如下:
回答(C語言):
int majorityElement(int* nums, int numsSize){int key = nums[0];int count = 0;for (int i = 0; i < numsSize; i++){if(nums[i] == key)count++;elsecount--;if(count <= 0){key = nums[i+1];}}return key;
}
運行效率如下所示:
第10題:最小的K個數
試題要求如下:
回答(C語言):
/*** Note: The returned array must be malloced, assume caller calls free().*/
int* getLeastNumbers(int* arr, int arrSize, int k, int* returnSize){int num=0;for(int i = 0; i < arrSize - 1; i++){for(int j = i+1; j < arrSize; j++){if(arr[i] > arr[j]){num = arr[i];arr[i] = arr[j];arr[j] = num;}}}returnSize[0]=k;return arr;
}
運行效率如下所示(邏輯簡單,效率慘不忍睹!):
總結
以上是生活随笔為你收集整理的力扣(LeetCode)刷题,简单题(第5期)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工业物联网LCD数码屏的驱动原理及低功耗
- 下一篇: GitHub开源基于Android系统的