剑指offer
喜乐自在
这个作者很懒,什么都没留下…
展开
-
leetcode 不用加减乘除算加法 || 二进制中1的个数
不能使用加减乘除进行运算,那么我们可以考虑计算机导论中学过的 ^(异或)运算 以及 &(与运算)根据上述的思路 代码如下class Solution {public: int Add(int num1, int num2) { while(num2!=0){ int sum=num1^num2; int add=(unsigned int )(num1&num2)<...原创 2022-05-06 15:29:27 · 80 阅读 · 0 评论 -
jz47 礼物的最大价值(动态规划思路)
动态规划问题的关键是,寻找dp状态方程,将结果与 dp状态绑定起来原创 2022-05-05 10:34:04 · 207 阅读 · 0 评论 -
剑指offer JZ10斐波那契数列
很多同学在刚开始学习递归时,斐波那契数列是一个经典的例子,在解决此题中,递归的思想同时扮演着重要的角色。解法1:class Solution {public: int Fibonacci(int n) { if(n<=2) return 1; //先解决n=1或2的特殊情况 else return Fibonacci(n-1)+Fibonacci(n-2); //调用函数,例如 求f(3)时,f(3)=..原创 2022-03-02 15:10:01 · 276 阅读 · 0 评论 -
leetcode剑指offer JZ25 合并两个排序的链表
已知要合并的两个链表是递增的排列,合并为新链表时我们可以考虑建立伪头部/** * struct ListNode { * int val; * struct ListNode *next; * }; * * C语言声明定义全局变量请加上static,防止重复定义 *//** * * @param pHead1 ListNode类 * @param pHead2 ListNode类 * @return ListNode类 */struct ListNode* M...原创 2022-03-01 21:35:06 · 566 阅读 · 0 评论 -
leetcode剑指offer JZ3 数组中重复的数字
给出 vector<int>&numbers 参数判断重复数字,若有则返回值 ,否则 返回-1;可以根据stl标准库的set容器 调用方法即可class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param numbers int整型vector * @return int整型 */ int dupl原创 2022-03-01 11:40:57 · 162 阅读 · 0 评论 -
leetcode剑指offer JZ42 连续子数组的最大和
此题笔者想出两种 解题模式第一种暴力解决方法,直接遍历数组array 依次计算a[1]的值 a[1]+a[2]的值 a[1]+a[2]+a[3]的值依次类推求出 各种连续子数组的值,然后依次与max值比较。第二种采用动态规划的思想class Solution {public: int FindGreatestSumOfSubArray(vector<int> array) { int cursum=0; //cursum为截止到原创 2022-03-01 11:19:11 · 126 阅读 · 0 评论 -
leetcode剑指offer JZ73 翻转单词序列
这道题主要是考察对string类对象字符串理解与使用:代码注释如下#include<iostream>using namespace std;class Solution {public: string ReverseSentence(string str) { if (str.empty()) return str; //特殊情况的话直接返回空值 string ret = ""; //设置两个空字符串 ...原创 2022-02-28 21:59:45 · 118 阅读 · 0 评论 -
leetcode剑指offer jz5 替换空格字符串
由题意可知,简单的遍历字符串即可#include<iostream>using namespace std;class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param s string字符串 * @return string字符串 */ string replaceSpace(string s) {...原创 2022-02-28 21:44:20 · 6366 阅读 · 0 评论 -
Leetcode剑指offer JZ9 双栈实现队列
利用栈的特性(FILO)即先进后出原则,遇到熟悉的数据结构,有概念但没思路的话,就采用模拟的思想,如下图所示:将stack1作为入队栈,stack2作为出队栈#include<iostream>using namespace std;class Solution{public: void push(int node) { stack1.push(node) } int pop() { if(stack2.empty(..原创 2022-02-23 22:34:20 · 172 阅读 · 0 评论 -
leetcode剑指offer JZ23:链表中环的入口节点
可以考虑利用set容器存放链表中的节点,根据set的不可重复,利用count函数判断是否存放重复数据。unordered set的无序列排列即可#include<iostream>using namespace std;struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};clas..原创 2022-02-23 11:21:42 · 414 阅读 · 0 评论