解题-->在线OJ(五)
解题--->leetcode
- 1.多数元素
- 2.Excel表列序号
- 3.颠倒二进制位
- 4.位1的个数
- 5.快乐数
- 6.回文链表
- 7.删除链表中的节点
- 8.有效的字母异位词
- 9.丢失的数字
- 10.移动零
1.多数元素
1.多数元素
解题思路:
运用hashMap来解决此题;
1.遍历数组,如果hashMap当中存在此下标元素,就直接将value++;
2.如果不存在此下标元素,就将此元素放入hashMap当中;
3.当首次放入hashMap的时候,也要取出对应的value值,看是否 大于 一般的数组长度;这种情况针对于,数组中只有一个元素时,所以,返回的也是这个元素;
4.当hashMap中已经存在此元素的情况,查出此元素对应的value值,然后判断是否大于 一半的数组长度,如果大于,记录元素,跳出循环,返回此元素。
class Solution {public int majorityElement(int[] nums) { int result=0;HashMap<Integer,Integer> hashMap=new HashMap<>();for(int i=0;i<nums.length;i++){if(!hashMap.containsKey(nums[i])){hashMap.put(nums[i],1);int ret=hashMap.get(nums[i]);if(ret>(nums.length/2)){result=nums[i];break;}}else{hashMap.put(nums[i],hashMap.get(nums[i])+1);int ret=hashMap.get(nums[i]);if(ret>(nums.length/2)){result=nums[i];break;}}}return result;}
}
2.Excel表列序号
2.Excel表列序号
解题思路:
将字符串转为字符数组;
遍历字符数组;
如果只有一位,就直接算与 A的差+1;eg:C==>‘C’-‘A’+1=3;
如果有两位:eg:ZY: ‘Z’-‘A’+1===>26; 26*26+’Y’-‘A’+1=701;
class Solution {public static int titleToNumber(String columnTitle) {char[] arr=columnTitle.toCharArray();int result=0;for(int i=0;i<arr.length;i++){result=result*26+arr[i]-'A'+1;}return result;}
}
3.颠倒二进制位
3.颠倒二进制位
解题思路:
主要是依据 按位与 来解此题目;
拿n的末位与1按位与,结果放在result当中,从末位开始放,这样,等经过了32次循环后,result的头就是n的尾,n的头就是result的尾部。
public class Solution {// you need treat n as an unsigned valuepublic static int reverseBits(int n) {int result=0;for(int i=0;i<32;i++){//先将result左移一位,用来放 n 与 1 按位与的结果//经过32次遍历之后,result的头就会变成n的结尾result=result<<1;if((n &1)==1){result+=1;}//当n与1 按位与,其实是 n的末位与1按位与,所以,每经过一次循环,n就要右移一位n=n>>1;}return result;}
}
4.位1的个数
4.位1的个数
解题思路:
也是运用了 按位与的思想
与上一题思路类似。
public class Solution {// you need to treat n as an unsigned valuepublic int hammingWeight(int n) {int result=0;for(int i=0;i<32;i++){if((n&1)==1){result++;}n=n>>1;}return result;}
}
5.快乐数
5.快乐数
解题思路:
这个题需要做两步:
1.首先需要 将n变为n的平方数;
2.其次,判断此时的n 是否为1;
如果n为1,就证明这个数字是快乐数字;
如果n不为1,就加入hashSet当中,如果hashSet当中已经存在这个n,就证明 进入了无限循环,此时,这个数字就不是快乐数。
import java.util.HashSet;
class Solution {public static int add(int n){int result=0;while(n>0){int ret=n%10;result+=Math.pow(ret,2);n=n/10;}return result;}public static boolean isHappy(int n) {HashSet<Integer> hashSet=new HashSet<>();while(n!=1){n=add(n);if(!hashSet.add(n)){return false;}}return true;}
}
6.回文链表
6.回文链表
解题思路:
回文特点:正着读 的结果 等于 反着读 的结果;
遍历整个链表,将链表每个节点的值,放在stringBuilder字符串当中,然后再将 这个字符串 和反转之后的字符串 相比较,看是否相等。
class Solution {public boolean isPalindrome(ListNode head) {StringBuilder stringBuilder=new StringBuilder();ListNode temp=head;while(temp!=null){stringBuilder.append(temp.val);temp=temp.next;}if(stringBuilder.toString().equals(stringBuilder.reverse().toString())){return true;}return false;}
}
7.删除链表中的节点
7.删除链表中的节点
解题思路:
一般链表删除,都是需要知道当前节点,以及当前节点的上一个节点,要删除当前节点,需要做的是:让当前节点的上一个节点指向当前节点的下一个节点。
而此题目,没有告诉我们 链表的头节点,我们无法知道 当前待删除节点的上一个节点是什么。
所以,我们需要换种思路,
让待删除节点的下一个节点的只覆盖当前节点的值,此时,当前节点的值已经更新为下一个节点的值,此时,让当前节点指向下一个节点的下一个节点。
说的更简单一点就是:让下一个节点值覆盖当前节点,删除下一个节点。
class Solution {public void deleteNode(ListNode node) {//如果此时这个node是尾节点,此时就不能删除这个节点if(node.next==null){return;}node.val=node.next.val;node.next=node.next.next;}
}
8.有效的字母异位词
8.有效的字母异位词
解题思路:
利用hash表来完成此题
首先,将字符串s放入hashMap当中;
然后,遍历字符串t,如果hashMap当中存在t中的字符,便把hashMap对应的value减一,如果hashMap存在t中的字符,且对应的value值为1,就把这个字符从hashMap中移掉,如果hashMap当中不存在t中的字符,就直接返回false;
最后,判断hashMap是否为空,空,返回true;
如果不为空,返回false.
class Solution {public static boolean isAnagram(String s, String t) {char[] ss=s.toCharArray();char[] tt=t.toCharArray();HashMap<Character,Integer> hashMap=new HashMap<>();for(int i=0;i<ss.length;i++){if(!hashMap.containsKey(ss[i])){hashMap.put(ss[i],1);}else{hashMap.put(ss[i],hashMap.get(ss[i])+1);}}for(int j=0;j<tt.length;j++){if(hashMap.containsKey(tt[j])&& hashMap.get(tt[j])==1){hashMap.remove(tt[j]);}else if(!hashMap.containsKey(tt[j])){return false;}else if(hashMap.containsKey(tt[j])){hashMap.put(tt[j],hashMap.get(tt[j])-1);}}if(hashMap.isEmpty()){return true;}return false;}
}
9.丢失的数字
9.丢失的数字
解题思路:
将数组进行排序;
循环遍历数组,数字的范围是[0,nums.length];
遍历数组,看下标是否等于相对应的数组元素;
如果退出了循环,还没有返回数字,就证明,这个丢失的长度是数组长度。
class Solution {public int missingNumber(int[] nums) {Arrays.sort(nums);for(int i=0;i<nums.length;i++){if(nums[i]!=i){return i;}}return nums.length;}
}
10.移动零
10.移动零
解题思路:
这个题需要在原来的数组上操作;
主要的思路是:遍历数组,如果遇见了数组中的第一个0,记录下位置,继续遍历后面的,后面的如果出现了不为0的元素,就将这个不为0的元素和之前记录下第一个零交换位置,然后再更新第一个零的位置。
class Solution {public static void moveZeroes(int[] nums) {int first=-1;for(int i=0;i<nums.length;i++){if(nums[i]!=0){if(first!=-1){int temp=nums[first];nums[first]=nums[i];nums[i]=temp;first++;}}else{if(first==-1){first=i;}}}}
}
解题-->在线OJ(五)相关推荐
- 解题-->在线OJ(十一)
解题-->力扣 1.组合总和II 2.全排列 3.旋转图像 4.字母异位词分组 5.跳跃游戏 6.合并区间 7.不同路径 8.最小路径和 9.翻转二叉树 10.颜色分类 1.组合总和II 这个题 ...
- 从0到1搞定在线OJ
目录 一.在线OJ的的原理 二.在线OJ的使用规则 三.注意事项 1.关于作弊 2.如何防止作弊 3.输入输出格式 4.换行问题 四.经典在线OJ坑人题目以及博主被坑经历 五.提交不成功及解决方法 六 ...
- 基于Java实现简单的在线 OJ 系统
项目名称:在线 oj 系统 项目背景: 每个人都有自己的梦想,一个程序猿要实现自己的梦想,平时的练习就必不可少.平时的刷题是必不可少的,力扣网和牛客网是我平时刷题的两个网站.里边的功能深深的吸引了我, ...
- 毕设项目:基于BS模型的在线OJ系统
系列文章目录 文章目录 系列文章目录 前言 一.在线OJ系统描述 二.在线编译模块 1.搭建一个HTTP服务器完成在线编译 2.收到HTTP请求,进行数据格式转化(HTTP中body的内容转换为JSO ...
- 在线OJ项目(3)------实现接口与网页前端进行交互
我们先想一下:我们要具体进行设计那些网页呢?有几个页面?都是干啥的?如何设计前后端交互的接口? 当前我们已经把数据库的相关操作给封装好了,接下来我们可以进行设计一些API,也就是HTTP风格的接口,通 ...
- JavaWeb项目——基于Servlet实现的在线OJ平台 (项目问答+代码详解)
文章目录 项目演示 预先知识 请问 在处理用户同时提交代码时是 多进程处理还是 多线程处理? 你是如何创建多进程的逻辑的 如何获取到编译与运行后的结果? 编译运行模块 子进程之间如何并发? 文件读写操 ...
- 在线OJ系统测试报告
在线OJ系统测试报告 一.单元测试 初始界面展示 1. 测试insert()方法 2. 测试delete()方法 3. 测试selectOne()方法 4. 测试selectAll()方法 二.功能测 ...
- 试着模仿LeetCode做一个在线OJ系统(超级阉割版)(附项目测试)
文章目录 引言--痛苦的刷题 1.简单的需求 2.读写文件模块 (1)读文件readFile() 输入:文件路径 返回值:String (2)写文件writeFile() 输入:文件路径,文件 3.创 ...
- 【在线OJ项目】项目环境与项目演示
目录 一.项目环境 二.项目展示 项目Gitee地址:online-oj: 在线OJ项目实现了核心模块,后续添加竞赛.考试等 (gitee.com)https://gitee.com/PG1886/o ...
最新文章
- GDCM:创建DICOMDIR的测试程序
- (建议收藏)前端面试必问的十六条HTTP网络知识体系
- L2-006 树的遍历
- 自行车房车,还是第一次看到,惊倒一片!
- sqlserver中分组按逗号连接
- 强人工智能基本问题:神经网络分层还是不分层
- 输入广义表建立子女兄弟链表示的树
- Docker教程小白实操入门(20)--如何删除数据卷
- VS2010与.NET4系列 10. VS2010代码智能感知增强
- SylixOS IO层源代码解析
- Python面向对象编程-类和实例
- 利用XML生成Word
- ​mybatis collection解析以及和association的区别
- CF1438D Powerful Ksenia
- fater-RCNN遇到的错误及其解决方案
- android开源社区
- 深度(Deepin)系统二三事
- 丽水松阳计算机职业高中学校,浙江省丽水市松阳县职专
- 华三MSR路由配置设备管理控制台DMC,实训室
- MosFET/FinFET/GAFET ——鳍式晶体管还能走多远
热门文章
- 哈希分布与一致性哈希算法—在swift中看到这个有意思的算法
- vue+mysql+node.js项目部署到腾讯云-云服务器/轻量应用服务器
- 华为m2android怎么升级,【刷机指导】华为平板M2 8 EMUI4.0回退EMUI3.1指导教程
- java常用jar包详解
- 指定文件打成jra包
- 股票价格波动-c语言
- Lightweight Adversarial Network for Salient Object Detection
- CCAI 2017 日本理化学研究所先进智能研究中心主任杉山将:弱监督机器学习的研究进展...
- 高速数据采集卡的分类和使用方法
- DataSphere Studio数据应用开发管理集成框架【DSS基础】