![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
wxm192939
这个作者很懒,什么都没留下…
展开
-
杨氏三角
一个递增有序矩阵,即每一行按从左向右递增,每一列按从上向下递增。输入一个矩阵和一个整数,判断这个整数是否在矩阵中。思路:遍历这个矩阵(从左下角或者右上角开始遍历),如果数x比矩阵中数大,则列(行)加1,如果比矩阵中数小,则行(列)减1.即从3和7的位置开始遍历只到行和列遍历完,也没有该整数,则不存在反之,该整数存在矩阵中。代码如下:#define _CRT_SEC...原创 2018-10-11 17:31:47 · 1335 阅读 · 0 评论 -
从上往下打印数组
题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印(二叉树层次遍历)public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> res = new ArrayList<&g...原创 2019-09-02 17:09:22 · 1017 阅读 · 0 评论 -
树的子结构
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { if(root2==null||root1==null){ return false; ...原创 2019-09-02 14:56:48 · 1019 阅读 · 0 评论 -
合并两个排序链表
题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { if(list1==null){ return list2; } ...原创 2019-09-02 14:16:53 · 976 阅读 · 0 评论 -
从尾到头打印链表
import java.util.ArrayList;public class Solution { ArrayList<Integer>list=new ArrayList<Integer>(); public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {...原创 2019-09-01 19:42:30 · 976 阅读 · 0 评论 -
最小的k个数
题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。import java.util.*;public class Solution { public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { ...原创 2019-09-01 18:56:09 · 953 阅读 · 0 评论 -
二叉树镜像
public class Solution { public void Mirror(TreeNode root) { if(root==null||(root.left==null&&root.right==null)){ return; } TreeNode tmp=root.left; ...原创 2019-09-01 16:51:13 · 960 阅读 · 0 评论 -
输出链表倒数节点
输入一个链表,输出该链表中倒数第k个结点。public class Solution { public ListNode FindKthToTail(ListNode head,int k) { ListNode quick=head; ListNode slow=head; if(k<=0){ ret...原创 2019-09-01 16:36:13 · 962 阅读 · 0 评论 -
链表逆置
输入一个链表,反转链表后,输出新链表的表头。public class Solution { public ListNode ReverseList(ListNode head) { ListNode pre=null; ListNode next=null; while(head!=null){ next=...原创 2019-09-01 16:35:00 · 1037 阅读 · 0 评论 -
动态规划问题
变态青蛙跳台阶问题描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多 少种跳法。思想:利用排列组合的思想,将台阶分为两部分,前n-1是一部分,最后一节是一部分。则前面的台阶有两种选择:跳或者不跳,最后一节台阶只有一种选择,必须跳F(n)=f(n-1)+f(n-2)+....f(n-n)F(n-1)=f(n-2)...原创 2019-07-25 16:53:48 · 1019 阅读 · 0 评论 -
求次方
求double型的base的int型的j次方是多少?思路:1.0的任何次方都为0;2.任何数的0次方都为1;3.j大于0,直接计算base的j次方;4.j小于0,计算结果取base的倒数。代码:#include<stdio.h>#include<string.h>#include<stdlib.h>int mul(double...原创 2018-10-14 20:25:45 · 1673 阅读 · 0 评论 -
统计二进制数中1的个数
思路:定义n表示1的个数,一个二进制数按位遍历一遍,并且每一位按位与1,结果为1,则n加1,输出n即为结果。代码:#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){ int num = 7; int ...原创 2018-10-14 20:11:29 · 1388 阅读 · 0 评论 -
替换空格
一个字符串,遇到空格换成%20,其他内容不变,如we are happy,输出为 we%20are%20happy 思路:定义两个数组,第一个数组存放字符串,先遍历数组,不是空格,则将值付给第二个数组,且数组下标加1,若为空格,第二个数组一次赋值%,2,0.如此循环下去,直到第一个数组遇到‘\0’结束,最后输出第二个数组即为结果。代码:#define _CRT_SECURE_NO_...原创 2018-10-14 20:04:53 · 953 阅读 · 0 评论 -
斐波那契数列
一列数:从1开始,前两项为1,从第三项开始每一项等于前两项之和。例:1 1 2 3 5 8 13推导出公式则为:n<3时f(n)=1;n>2时f(n)=f(n-1)+f(n-2);递归算法:#include<stdio.h>int fib(int n){ if (n <= 2) { return 1; } else {...原创 2018-10-10 20:55:18 · 11183 阅读 · 1 评论 -
二叉搜索树的后序遍历序列
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。public class Solution { public boolean VerifySquenceOfBST(int [] sequence) { if(sequence.length==0){ //数组为空...原创 2019-09-02 20:55:15 · 926 阅读 · 0 评论