mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-09 12:11:28 +08:00
Merge pull request #288 from freitzzz/master
Fixed files and folders name conventions
This commit is contained in:
283
Data Structures/HashMap/HashMap.java
Normal file
283
Data Structures/HashMap/HashMap.java
Normal file
@ -0,0 +1,283 @@
|
|||||||
|
<<<<<<< HEAD:Data Structures/HashMap/HashMap.java
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
|
||||||
|
public class HashMap<K,V> {
|
||||||
|
public class hmnodes{ //HashMap nodes
|
||||||
|
K key;
|
||||||
|
V value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int size=0; //size of hashmap
|
||||||
|
private LinkedList<hmnodes> buckets[]; //array of addresses of list
|
||||||
|
|
||||||
|
public HashMap(){
|
||||||
|
buckets=new LinkedList[4]; //initially create bucket of any size
|
||||||
|
for(int i=0;i<4;i++)
|
||||||
|
buckets[i]=new LinkedList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void put(K key,V value) throws Exception{
|
||||||
|
int bi=bucketIndex(key); //find the index,the new key will be inserted in linklist at that index
|
||||||
|
int fountAt=find(bi,key); //check if key already exists or not
|
||||||
|
if(fountAt==-1){
|
||||||
|
hmnodes temp=new hmnodes(); //if doesn't exist create new node and insert
|
||||||
|
temp.key=key;
|
||||||
|
temp.value=value;
|
||||||
|
buckets[bi].addLast(temp);
|
||||||
|
this.size++;
|
||||||
|
}else{
|
||||||
|
buckets[bi].get(fountAt).value=value;//if already exist modify the value
|
||||||
|
}
|
||||||
|
|
||||||
|
double lambda = (this.size*1.0)/this.buckets.length;
|
||||||
|
if(lambda>2.0){
|
||||||
|
rehash(); //rehashing function which will increase the size of bucket as soon as lambda exceeds 2.0
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public V get(K key) throws Exception{
|
||||||
|
int bi=bucketIndex(key);
|
||||||
|
int fountAt=find(bi,key);
|
||||||
|
if(fountAt==-1){
|
||||||
|
return null;
|
||||||
|
}else{
|
||||||
|
return buckets[bi].get(fountAt).value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public V remove(K key) throws Exception{
|
||||||
|
int bi=bucketIndex(key);
|
||||||
|
int fountAt=find(bi,key);
|
||||||
|
if(fountAt==-1){
|
||||||
|
return null;
|
||||||
|
}else{
|
||||||
|
this.size--;
|
||||||
|
return buckets[bi].remove(fountAt).value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean containskey(K key) throws Exception{
|
||||||
|
int bi=bucketIndex(key);
|
||||||
|
int fountAt=find(bi,key);
|
||||||
|
if(fountAt==-1){
|
||||||
|
return false;
|
||||||
|
}else{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int size(){
|
||||||
|
return this.size;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isempty(){
|
||||||
|
return this.size==0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<K> keyset() throws Exception{
|
||||||
|
ArrayList<K> arr=new ArrayList<>();
|
||||||
|
for(int i=0;i<buckets.length;i++){
|
||||||
|
for(int j=0;j<buckets[i].size();j++){
|
||||||
|
arr.add(buckets[i].get(j).key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<V> valueset() throws Exception{
|
||||||
|
ArrayList<V> arr=new ArrayList<>();
|
||||||
|
for(int i=0;i<buckets.length;i++){
|
||||||
|
for(int j=0;j<buckets[i].size();j++){
|
||||||
|
arr.add(buckets[i].get(j).value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void display() throws Exception{
|
||||||
|
for(int i=0;i<buckets.length;i++){
|
||||||
|
System.out.print("Bucket: "+i+" ");
|
||||||
|
for(int j=0;j<buckets[i].size();j++){
|
||||||
|
hmnodes temp=buckets[i].get(j);
|
||||||
|
System.out.print("["+temp.key+"->"+temp.value+"]");
|
||||||
|
}
|
||||||
|
System.out.println();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int find(int bi,K key) throws Exception{
|
||||||
|
for(int i=0;i<buckets[bi].size();i++){
|
||||||
|
if(key.equals(buckets[bi].get(i).key))
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int bucketIndex(K key) throws Exception{
|
||||||
|
int bi=key.hashCode();
|
||||||
|
return Math.abs(bi%buckets.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void rehash() throws Exception{
|
||||||
|
LinkedList<hmnodes> ob[]= buckets;
|
||||||
|
buckets=new LinkedList[ob.length*2];
|
||||||
|
for(int i=0;i<ob.length*2;i++)
|
||||||
|
buckets[i]=new LinkedList<>();
|
||||||
|
|
||||||
|
size = 0;
|
||||||
|
for(int i=0;i<ob.length;i++){
|
||||||
|
for(int j=0;j<ob[i].size();j++){
|
||||||
|
put(ob[i].get(j).key,ob[i].get(j).value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
=======
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.LinkedList;
|
||||||
|
|
||||||
|
public class HashMap<K,V> {
|
||||||
|
public class hmnodes{ //HashMap nodes
|
||||||
|
K key;
|
||||||
|
V value;
|
||||||
|
}
|
||||||
|
|
||||||
|
private int size=0; //size of hashmap
|
||||||
|
private LinkedList<hmnodes> buckets[]; //array of addresses of list
|
||||||
|
|
||||||
|
public HashMap(){
|
||||||
|
buckets=new LinkedList[4]; //initially create bucket of any size
|
||||||
|
for(int i=0;i<4;i++)
|
||||||
|
buckets[i]=new LinkedList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void put(K key,V value) throws Exception{
|
||||||
|
int bi=bucketIndex(key); //find the index,the new key will be inserted in linklist at that index
|
||||||
|
int fountAt=find(bi,key); //check if key already exists or not
|
||||||
|
if(fountAt==-1){
|
||||||
|
hmnodes temp=new hmnodes(); //if doesn't exist create new node and insert
|
||||||
|
temp.key=key;
|
||||||
|
temp.value=value;
|
||||||
|
buckets[bi].addLast(temp);
|
||||||
|
this.size++;
|
||||||
|
}else{
|
||||||
|
buckets[bi].get(fountAt).value=value;//if already exist modify the value
|
||||||
|
}
|
||||||
|
|
||||||
|
double lambda = (this.size*1.0)/this.buckets.length;
|
||||||
|
if(lambda>2.0){
|
||||||
|
rehash(); //rehashing function which will increase the size of bucket as soon as lambda exceeds 2.0
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public V get(K key) throws Exception{
|
||||||
|
int bi=bucketIndex(key);
|
||||||
|
int fountAt=find(bi,key);
|
||||||
|
if(fountAt==-1){
|
||||||
|
return null;
|
||||||
|
}else{
|
||||||
|
return buckets[bi].get(fountAt).value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public V remove(K key) throws Exception{
|
||||||
|
int bi=bucketIndex(key);
|
||||||
|
int fountAt=find(bi,key);
|
||||||
|
if(fountAt==-1){
|
||||||
|
return null;
|
||||||
|
}else{
|
||||||
|
this.size--;
|
||||||
|
return buckets[bi].remove(fountAt).value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean containskey(K key) throws Exception{
|
||||||
|
int bi=bucketIndex(key);
|
||||||
|
int fountAt=find(bi,key);
|
||||||
|
if(fountAt==-1){
|
||||||
|
return false;
|
||||||
|
}else{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int size(){
|
||||||
|
return this.size;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean isempty(){
|
||||||
|
return this.size==0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<K> keyset() throws Exception{
|
||||||
|
ArrayList<K> arr=new ArrayList<>();
|
||||||
|
for(int i=0;i<buckets.length;i++){
|
||||||
|
for(int j=0;j<buckets[i].size();j++){
|
||||||
|
arr.add(buckets[i].get(j).key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<V> valueset() throws Exception{
|
||||||
|
ArrayList<V> arr=new ArrayList<>();
|
||||||
|
for(int i=0;i<buckets.length;i++){
|
||||||
|
for(int j=0;j<buckets[i].size();j++){
|
||||||
|
arr.add(buckets[i].get(j).value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void display() throws Exception{
|
||||||
|
for(int i=0;i<buckets.length;i++){
|
||||||
|
System.out.print("Bucket: "+i+" ");
|
||||||
|
for(int j=0;j<buckets[i].size();j++){
|
||||||
|
hmnodes temp=buckets[i].get(j);
|
||||||
|
System.out.print("["+temp.key+"->"+temp.value+"]");
|
||||||
|
}
|
||||||
|
System.out.println();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public int find(int bi,K key) throws Exception{
|
||||||
|
for(int i=0;i<buckets[bi].size();i++){
|
||||||
|
if(key.equals(buckets[bi].get(i).key))
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int bucketIndex(K key) throws Exception{
|
||||||
|
int bi=key.hashCode();
|
||||||
|
return Math.abs(bi%buckets.length);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void rehash() throws Exception{
|
||||||
|
LinkedList<hmnodes> ob[]= buckets;
|
||||||
|
buckets=new LinkedList[ob.length*2];
|
||||||
|
for(int i=0;i<ob.length*2;i++)
|
||||||
|
buckets[i]=new LinkedList<>();
|
||||||
|
|
||||||
|
size = 0;
|
||||||
|
for(int i=0;i<ob.length;i++){
|
||||||
|
for(int j=0;j<ob[i].size();j++){
|
||||||
|
put(ob[i].get(j).key,ob[i].get(j).value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
>>>>>>> 7e3a8c55c865471a33f6932a022a1059c5243fc3:data_structures/HashMap/HashMap.java
|
17
Misc/FloydTriangle.java
Normal file
17
Misc/FloydTriangle.java
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
|
|
||||||
|
class FloydTriangle {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Scanner sc = new Scanner(System.in);
|
||||||
|
System.out.println("Enter the number of rows which you want in your Floyd Triangle: ");
|
||||||
|
int r = sc.nextInt(), n = 0;
|
||||||
|
|
||||||
|
for(int i=0; i < r; i++) {
|
||||||
|
for(int j=0; j <= i; j++) {
|
||||||
|
System.out.print(++n + " ");
|
||||||
|
}
|
||||||
|
System.out.println();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
33
Misc/RootPrecision.java
Normal file
33
Misc/RootPrecision.java
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
import java.io.*;
|
||||||
|
import java.util.*;
|
||||||
|
import java.text.*;
|
||||||
|
import java.math.*;
|
||||||
|
import java.util.regex.*;
|
||||||
|
|
||||||
|
public class Solution {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
//take input
|
||||||
|
Scanner scn = new Scanner(System.in);
|
||||||
|
|
||||||
|
int N = scn.nextInt(); //N is the input number
|
||||||
|
int P = scn.nextInt(); //P is precision value for eg - P is 3 in 2.564 and 5 in 3.80870.
|
||||||
|
|
||||||
|
System.out.println(squareRoot(N, P));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static double squareRoot(int N, int P) {
|
||||||
|
double rv = 0; //rv means return value
|
||||||
|
|
||||||
|
double root = Math.pow(N, 0.5);
|
||||||
|
|
||||||
|
//calculate precision to power of 10 and then multiply it with root value.
|
||||||
|
int precision = (int) Math.pow(10, P);
|
||||||
|
root = root * precision;
|
||||||
|
/*typecast it into integer then divide by precision and again typecast into double
|
||||||
|
so as to have decimal points upto P precision */
|
||||||
|
|
||||||
|
rv = (int)root;
|
||||||
|
return (double)rv/precision;
|
||||||
|
}
|
||||||
|
}
|
@ -1,139 +0,0 @@
|
|||||||
import java.util.ArrayList;
|
|
||||||
import java.util.LinkedList;
|
|
||||||
|
|
||||||
public class HashMap<K,V> {
|
|
||||||
public class hmnodes{ //HashMap nodes
|
|
||||||
K key;
|
|
||||||
V value;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int size=0; //size of hashmap
|
|
||||||
private LinkedList<hmnodes> buckets[]; //array of addresses of list
|
|
||||||
|
|
||||||
public HashMap(){
|
|
||||||
buckets=new LinkedList[4]; //initially create bucket of any size
|
|
||||||
for(int i=0;i<4;i++)
|
|
||||||
buckets[i]=new LinkedList<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void put(K key,V value) throws Exception{
|
|
||||||
int bi=bucketIndex(key); //find the index,the new key will be inserted in linklist at that index
|
|
||||||
int fountAt=find(bi,key); //check if key already exists or not
|
|
||||||
if(fountAt==-1){
|
|
||||||
hmnodes temp=new hmnodes(); //if doesn't exist create new node and insert
|
|
||||||
temp.key=key;
|
|
||||||
temp.value=value;
|
|
||||||
buckets[bi].addLast(temp);
|
|
||||||
this.size++;
|
|
||||||
}else{
|
|
||||||
buckets[bi].get(fountAt).value=value;//if already exist modify the value
|
|
||||||
}
|
|
||||||
|
|
||||||
double lambda = (this.size*1.0)/this.buckets.length;
|
|
||||||
if(lambda>2.0){
|
|
||||||
rehash(); //rehashing function which will increase the size of bucket as soon as lambda exceeds 2.0
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public V get(K key) throws Exception{
|
|
||||||
int bi=bucketIndex(key);
|
|
||||||
int fountAt=find(bi,key);
|
|
||||||
if(fountAt==-1){
|
|
||||||
return null;
|
|
||||||
}else{
|
|
||||||
return buckets[bi].get(fountAt).value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public V remove(K key) throws Exception{
|
|
||||||
int bi=bucketIndex(key);
|
|
||||||
int fountAt=find(bi,key);
|
|
||||||
if(fountAt==-1){
|
|
||||||
return null;
|
|
||||||
}else{
|
|
||||||
this.size--;
|
|
||||||
return buckets[bi].remove(fountAt).value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean containskey(K key) throws Exception{
|
|
||||||
int bi=bucketIndex(key);
|
|
||||||
int fountAt=find(bi,key);
|
|
||||||
if(fountAt==-1){
|
|
||||||
return false;
|
|
||||||
}else{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int size(){
|
|
||||||
return this.size;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public boolean isempty(){
|
|
||||||
return this.size==0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ArrayList<K> keyset() throws Exception{
|
|
||||||
ArrayList<K> arr=new ArrayList<>();
|
|
||||||
for(int i=0;i<buckets.length;i++){
|
|
||||||
for(int j=0;j<buckets[i].size();j++){
|
|
||||||
arr.add(buckets[i].get(j).key);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return arr;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ArrayList<V> valueset() throws Exception{
|
|
||||||
ArrayList<V> arr=new ArrayList<>();
|
|
||||||
for(int i=0;i<buckets.length;i++){
|
|
||||||
for(int j=0;j<buckets[i].size();j++){
|
|
||||||
arr.add(buckets[i].get(j).value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return arr;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void display() throws Exception{
|
|
||||||
for(int i=0;i<buckets.length;i++){
|
|
||||||
System.out.print("Bucket: "+i+" ");
|
|
||||||
for(int j=0;j<buckets[i].size();j++){
|
|
||||||
hmnodes temp=buckets[i].get(j);
|
|
||||||
System.out.print("["+temp.key+"->"+temp.value+"]");
|
|
||||||
}
|
|
||||||
System.out.println();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int find(int bi,K key) throws Exception{
|
|
||||||
for(int i=0;i<buckets[bi].size();i++){
|
|
||||||
if(key.equals(buckets[bi].get(i).key))
|
|
||||||
return i;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int bucketIndex(K key) throws Exception{
|
|
||||||
int bi=key.hashCode();
|
|
||||||
return Math.abs(bi%buckets.length);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void rehash() throws Exception{
|
|
||||||
LinkedList<hmnodes> ob[]= buckets;
|
|
||||||
buckets=new LinkedList[ob.length*2];
|
|
||||||
for(int i=0;i<ob.length*2;i++)
|
|
||||||
buckets[i]=new LinkedList<>();
|
|
||||||
|
|
||||||
size = 0;
|
|
||||||
for(int i=0;i<ob.length;i++){
|
|
||||||
for(int j=0;j<ob[i].size();j++){
|
|
||||||
put(ob[i].get(j).key,ob[i].get(j).value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
Reference in New Issue
Block a user