刷题记录
Sheldon_Liu88
爱自己的人生!
展开
-
基础排序方法总结与C++实现
基础排序方法总结 基础排序方法与思路: 实现的排序方法代码:主要理解 归并排序的递归终止条件 和 快速排序的Partition的思路和终止条件(单纯遍历的话会有很多冗余情况)。 // MethodsOfSort.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // #include <iostream> #include <time.h> #include <stdlib.h> #include <string.h> const原创 2022-02-07 22:13:47 · 529 阅读 · 0 评论 -
【每日一题】74. 搜索二维矩阵 + 【剑指offer】10- I. 斐波那契数列
每日一题 搜索二维矩阵,前几天做过,这次独立写出来了。 class Solution { public: bool searchMatrix(vector<vector<int>>& matrix, int target) { int i = 0,j = size(matrix[0]) - 1; int flag = matrix[i][j]; //printf("%d",size(matrix));原创 2021-03-30 13:13:39 · 151 阅读 · 0 评论 -
【每日一题】190. 颠倒二进制位
颠倒二进制位 题目:颠倒给定的 32 位无符号整数的二进制位。 输入: 00000010100101000001111010011100 输出: 00111001011110000010100101000000 解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。 方法一 按位取反然后向右移位。一定要注意初始化为0原创 2021-03-30 12:20:52 · 156 阅读 · 0 评论 -
【剑指offer】61.旋转链表
题目 给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。 输入:head = [1,2,3,4,5], k = 2 输出:[4,5,1,2,3] 方法一 先判断输入是否为NULL或者k0,不为空的话,找到链表的长度,然后向右移动k % length== 步。 初步想的是用数组来实现。这样空间复杂度为O(n),时间复杂度为O(n). class Solution { public: ListNode* rotateRight(ListNode* head, int k原创 2021-03-27 22:57:36 · 63 阅读 · 0 评论 -
【剑指offer】06. 从尾到头打印链表
题目 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 输入:head = [1,3,2] 输出:[2,3,1] 方法一:遍历 首先,判断是否是空链表,如果是,就返回NULL;如果不是,获取目标链表的长度,然后从后往前遍历。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(原创 2021-03-26 20:28:24 · 71 阅读 · 0 评论 -
【剑指offer】05.替换空格
题目 请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 输入:s = “We are happy.” 输出:“We%20are%20happy.” 思路:先计算空格个数,然后扩容,然后从后往前依次平移string的元素,遇到空格就把 0 2 % 插进去。知道后面一个指针等于前面一个指针。 class Solution { public: string replaceSpace(string s) { int count = 0; int le原创 2021-03-25 23:23:26 · 55 阅读 · 0 评论 -
【剑指offer】04.二维数组中的查找
题目 在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 现有矩阵 matrix 如下: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ] 给定 target = 5,返回原创 2021-03-24 22:08:36 · 70 阅读 · 0 评论 -
【剑指offer】03.数组中重复的数字
题目 找出数组中重复的数字。 在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。 示例 1: 输入: [2, 3, 1, 0, 2, 5, 3] 输出:2 或 3 方法一:暴力遍历法 class Solution { public: int findRepeatNumber(vector<int>& nums) {原创 2021-03-23 22:59:26 · 196 阅读 · 0 评论