算法学习之剑指offer(三)
题目1
题目描述
public class Solution {
public int NumberOf1(int n) {
int count = 0;
while(n!=0){
count++;
n = n&(n-1);
}
return count;
}
}
题目2
题目描述
考虑下0和负数的情况即可
public class Solution {
public double Power(double base, int exponent) {
double result = 1.00;
for(;exponent>0;exponent--)
result*=base;
if(exponent<0){
for(;exponent<0;exponent++)
result*=base;
return 1/result;
}
return result;
}
}
题目3
题目描述
记得是要导包的,时间复杂度和空间复杂度都是O(n)
import java.util.*;
public class Solution {
public void reOrderArray(int [] array) {
int []test = Arrays.copyOf(array,array.length);
int index=0;
for(int i=0;i<test.length;i++){
if(test[i]%2==1){
array[index]=test[i];
index++;
}
}
for(int i=0;i<test.length;i++){
if(test[i]%2==0){
array[index]=test[i];
index++;
}
}
}
}
题目4
题目描述
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(head==null||k==0)
return null;
ListNode node1 = head;
ListNode node2 = head;
for(int i=0;i<k-1;i++)
{
if(node1.next==null)
return null;
node1 = node1.next;
}
while(node1.next!=null){
node1 = node1.next;
node2 = node2.next;
}
return node2;
}
}
题目5
题目描述
自己的做法(两个指向,一个用来遍历一个用来保存)+自己基础上更简单的+ 递归的方法
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head==null)
return null;
ListNode last_node=null;//上一个为空
ListNode node = head;
while(node.next!=null)
{
//保存下一个的位置
ListNode next = node.next;
//进行逆转修改,并保存当前节点为上一个节点
node.next = last_node;
last_node = node;
//遍历跳转至下一个
node = next;
}
node.next=last_node;//最后一次逆转修改
return node;
}
}
public ListNode ReverseList(ListNode head) {
ListNode pre = null;
ListNode next = null;
while (head != null) {
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
递归解法
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
//如果链表为空或者链表中只有一个元素
if(head==null||head.next==null)
return head;
//不断化解为更小的head.next链表逆转
ListNode pReverseNode=ReverseList(head.next);
head.next.next=head;//将下个节点的next设置为自己,层层调用之后就会全部逆转了
head.next=null;//虽然每层head.next都职位null了,但其实只是为了最后一个节点可以置为null
return pReverseNode;//此处无论调用到多少层,返回的都是原链表最后一个
}
}
题目6
题目描述
有点点难度...
简单的递归解法(还有复杂的非递归方法):
public ListNode Merge(ListNode list1,ListNode list2) {
if(list1 == null){
return list2;
}
if(list2 == null){
return list1;
}
if(list1.val <= list2.val){
list1.next = Merge(list1.next, list2);
return list1;
}else{
list2.next = Merge(list1, list2.next);
return list2;
}
}
算法学习之剑指offer(三)的更多相关文章
- 算法学习之剑指offer(十一)
一 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. import java.util.*; ...
- 算法学习之剑指offer(九)
一 题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). public class Solution ...
- 算法学习之剑指offer(六)
题目1 题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. import java.util.*; public cl ...
- 算法学习之剑指offer(十)
一 题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3 ...
- 算法学习之剑指offer(八)
题目一 题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100.但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数).没 ...
- 算法学习之剑指offer(五)
题目1 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. public class Solution ...
- 算法学习之剑指offer(四)
题目1 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) /** public class TreeNode { int val = 0; Tree ...
- 算法学习之剑指offer(一)
题目一: 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路1:遍历 ...
- 算法学习之剑指offer(十二)
一 题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩 ...
随机推荐
- Go语言标准库之template
html/template包实现了数据驱动的模板,用于生成可对抗代码注入的安全HTML输出.它提供了和text/template包相同的接口,Go语言中输出HTML的场景都应使用text/templa ...
- 搭建自己的技术博客系列(二)把 Hexo 博客部署到 GitHub 上
1.在GitHub上建一个新仓库
- 归并排序、jensen不等式、非线性、深度学习
前言 在此记录一些不太成熟的思考,希望对各位看官有所启发. 从题目可以看出来这篇文章的主题很杂,这篇文章中我主要讨论的是深度学习为什么要"深"这个问题.先给出结论吧:"深 ...
- 浅谈PHP反序列化漏洞原理
序列化与反序列化 序列化用途:方便于对象在网络中的传输和存储 0x01 php反序列化漏洞 在PHP应用中,序列化和反序列化一般用做缓存,比如session缓存,cookie等. 常见的序列化格式: ...
- C# 缓存的实现
缓存的实现 我们不是做第三方比如Redis等的缓存实现,而是根据实际情况,基于C#上做一些环境变量的保存,方便项目使用. 1.系统全局变量 很多时候,在系统运行开始,需要对系统的运行参数进行保存,以便 ...
- android studio连接雷电模拟器 【AS 模拟器】
⭐ 我的网站: www.mengyingjie.com ⭐ Android studio 怎么连接安卓模拟器呢,跟着下面的步骤即可 (以雷电模拟器为例,其他模拟器类似) 一.下载模拟器 下载安装完雷电 ...
- Hadoop入门 之 Hadoop的安装
1.安装Hadoop的三大步骤 答:1.Linux环境,2.JDK环境,3.配置Hadoop. 2.安装Linux 答:利用阿里云,腾讯云等公有云.选择Ubuntu进行安装,然后利用小putty进行操 ...
- [Spark] 02 - Practice Spark
开发环境 教学视频:Spark的环境搭建,需安装配置环境:Java, Hadoop 环境配置:玩转大数据分析!Spark2.X+Python 精华实战课程(免费)[其实只是环境搭建] 进入pyspar ...
- 第八届蓝桥杯java b组第八题
,标题:包子凑数 小明几乎每天早晨都会在一家包子铺吃早餐.他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子.每种蒸笼都有非常多笼,可以认为是无限笼. 每当有顾客想买X个包子,卖包子的大叔就 ...
- Spring boot 官网学习笔记 - Auto-configuration(@SpringBootApplication、@EnableAutoConfiguration、@Configuration)
Spring Boot auto-configuration attempts to automatically configure your Spring application based on ...