Untitled
Anonymous
plain_text
01/29/2026 12:48 PM
15.8 KB
9
Indexable
import 'dart:collection';
import 'dart:io';
import 'dart:math';
// // declaring the node, this is the basic building block of linked list
// class Node<T>{
// T data;
// Node<T>? next;
//
// Node(this.data);
// }
//
// class LinkedList<T>{
// Node<T>? head;
//
// //add at end
//
// void add(T data){
// final newNode = Node<T>(data);
//
// if(head == null){
// head = newNode;
// return;
// }
//
// Node<T>? current = head;
// while(current!.next != null){
// current = current.next;
// }
//
// }
//
//
//
// }
bool palindrome(int num) {
int x = num;
int result = 0;
while (num > 0) {
int last = num % 10; // 123 => rem 3
result = result * 10 + last;
num = (num ~/ 10);
}
print(result);
if (x == result) {
return true;
}
return false;
}
// bool palindrome(int num) {
// String x = num.toString();
// String result = '';
// for (int i = x.length - 1; i >= 0; i--) {
// result = result + x[i];
// }
// int y = int.parse(result);
// print(y);
// if (num == y) {
// return true;
// } else {
// return false;
// }
// }
void stringSwap(String a, String b) {
String extra = a;
a = b;
b = extra;
print(a);
print(b);
}
void starPattern1(int n) {
for (int i = 0; i < n; i++) {
for (int k = n - 2; k >= i; k--) {
stdout.write(' ');
}
for (int j = 0; j <= i; j++) {
stdout.write(' *');
}
for (int l = n - 1; l > i; l--) {
stdout.write(' ');
}
for (int k = n - 1; k > i; k--) {
stdout.write(' ');
}
for (int m = 0; m <= i; m++) {
stdout.write(' *');
}
print('');
}
for (int i = 0; i < n; i++) {
for (int j = 1; j <= i; j++) {
stdout.write(' ');
}
for (int k = n; k > i; k--) {
stdout.write(' *');
}
for (int l = 1; l <= i; l++) {
stdout.write(' ');
}
for (int m = n; m > i; m--) {
stdout.write(' *');
}
print('');
}
}
Future<void> starPatternB(int n) async {
for (int i = 1; i <= n; i++) {
stdout.write('*');
for (int k = 2; k <= 2 * i; k++) {
stdout.write(' ');
}
stdout.write('*');
print('');
await Future.delayed(Duration(milliseconds: 500));
}
for (int i = 1; i <= n; i++) {
stdout.write('*');
for (int k = 2 * n; k >= 2 * i; k--) {
stdout.write(' ');
}
stdout.write('*');
print('');
await Future.delayed(Duration(milliseconds: 500));
}
for (int i = 1; i <= n; i++) {
stdout.write('*');
for (int k = 2; k <= 2 * i; k++) {
stdout.write(' ');
}
stdout.write('*');
print('');
await Future.delayed(Duration(milliseconds: 500));
}
for (int i = 1; i <= n; i++) {
stdout.write('*');
for (int k = 2 * n; k >= 2 * i; k--) {
stdout.write(' ');
}
stdout.write('*');
print('');
await Future.delayed(Duration(milliseconds: 50));
}
}
int fib(int n) {
if (n == 0) {
return 0;
} else if (n == 1) {
// print()
return 1;
}
return fib(n - 2) + fib(n - 1);
}
int fact(int n) {
if (n < 1) {
return 1;
}
return n * fact(n - 1);
}
bool primeNum(int num) {
int count = 0;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
count = count + 1;
}
print(count);
return true;
}
// void subSet(String str){
// num seq = pow(2, str.length);
// List<String> result = [];
// print(seq);
// for(int i = 1; i<=seq; i++){
// result.add(str.char)
// }
// }
// List<String> findSubsets(String str) {
// int n = str.length;
// int totalSubsets = 1 << n; // 2^n
// List<String> result = [];
//
// for (int mask = 0; mask < totalSubsets; mask++) { // 0, 1, 2, 3, 4, 5
// String subset = "";
//
// for (int i = 0; i < n; i++) { // 0 1 2
// if ((mask & (1 << i)) != 0) {
// subset += str[i];
// }
//
// }
//
// result.add(subset.isEmpty ? "0" : subset);
// }
//
// return result;
// }
List<String> findSubsetsRecursive(String str) {
List<String> result = [];
void helper(int index, String current) {
if (index == str.length) {
result.add(current.isEmpty ? "0" : current);
return;
}
helper(index + 1, current);
helper(index + 1, current + str[index]);
}
helper(0, '');
return result;
}
int fact2(int num) {
int sum = 1;
for (int i = num; i >= 1; i--) {
sum = sum * i;
}
return sum;
}
int findGCD(int n1, int n2) {
int x = n1 < n2 ? n1 : n2;
int gcd = 1;
for (int i = 1; i <= x; i++) {
if (n1 % i == 0 && n2 % i == 0) {
gcd = i;
}
}
return gcd;
}
int octalToDecimal(int num) {
int x = num ~/ 10;
return num - (x * 2);
}
int octalToDecimal2(int oct) {
int x = oct;
num result = 0;
int i = 0;
while (x > 0) {
int rem = x % 10;
result = result + rem * (pow(8, i));
x = x ~/ 10;
i++;
}
return result.toInt();
}
List<int> largestKNums(List<int> arr, int k) {
List<int> result = [];
for (int i = 1; i <= k; i++) {
int x = helperFindLargest(arr);
result.add(x);
arr.remove(x);
}
result.sort((a, b) => a < b ? 1 : -1);
return result;
}
int helperFindLargest(List<int> arr) {
int largest = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] > largest) {
largest = arr[i];
}
}
return largest;
}
String helperCommonPrefixBTW(String str1, String str2) {
String result = '';
int index = 0;
int min = str1.length > str2.length ? str2.length : str1.length;
while (index < min) {
if (str1[index] == str2[index]) {
result = result + str1[index];
} else {
result = '';
}
index++;
}
return result;
}
//
// String longestSubstring(List<String> arr){ //['flower', 'flow', 'flee']
// List<String> result = [];
//
// for(int i= 0; i< arr.length; i++) {
// if(i==0){
// result.addAll(helperCommonBTW(arr[i], arr[i + 1]));
// }else{
// List<String> temp = [];
// for(int j = 0 ; j < result.length ; j++){
// temp.addAll(helperCommonBTW(arr[i], result[j]));
// }
// result = result.where((element) => temp.contains(element)).toList();
// }
// }
// result.sort((a, b) => b.length.compareTo(a.length));
// return result.isEmpty ? 'No one matched' : result.first;
// }
//
// List<String> helperCommonBTW(String str1, String str2){ //['flowering', 'floaaer', 'floer','fasloer']
// List<String> result =[];
// int a = 0;
// for(int i = 0; i<str1.length; i++){
// int b = 0;
// for(int j =0; j< str2.length; j++){
// if(str1[a] == str2[b]){
// int pointer1 = a;
// int pointer2 = b;
//
// String common = '';
//
// while(pointer1 < str1.length && pointer2 < str2.length && str1[pointer1] == str2[pointer2]){
// common += str1[pointer1];
// pointer1++;
// pointer2++;
// }
// result.add(common);
// }
// b++;
// }
// a++;
// }
// return result.toSet().toList();
// }
class Node {
int data;
Node? left;
Node? right;
Node(this.data);
}
void inOrder(Node? root) {
if (root == null) return;
inOrder(root.left);
print(root.data);
inOrder(root.right);
}
void preOrder(Node? root) {
if (root == null) {
return;
}
print(root.data);
preOrder(root.left);
preOrder(root.right);
}
void postOrder(Node? root) {
if (root == null) return;
postOrder(root.left);
postOrder(root.right);
print(root.data);
}
int climbStairs(int n) {
if(n==0) return 1;
if(n==1) return 1;
return climbStairs(n-1) + climbStairs(n-2);
}
int climbStairs2(int n) {
if(n==1) return 1;
if(n==2) return 2;
int first = 1;
int second = 2;
int sum = 0;
for(int i =3; i<=n; i++){
sum = first + second;
first = second;
second = sum;
}
return sum;
}
int height(Node? root){
if(root == null) return 0;
int leftHeight = height(root.left);
int rightHeight = height(root.right);
return 1 + (leftHeight > rightHeight ? leftHeight : rightHeight);
}
Node insert(Node? root, int value) {
if (root == null) {
return Node(value);
}
if (value < root.data) {
root.left = insert(root.left, value);
} else {
root.right = insert(root.right, value);
}
return root;
}
bool search(Node? root, int key) {
if (root == null) {
return false;
}
if (root.data == key) {
return true;
}
if (key < root.data) {
return search(root.left, key);
} else {
return search(root.right, key);
}
}
void deleteTree(Node? root) {
if (root == null) return;
deleteTree(root.left);
deleteTree(root.right);
print('deleting ${root.data}');
root = null;
}
String longestSubstring(List<String> arr) {
if (arr.length < 2) return 'No one matched';
Set<String> common = helperCommonBTW(arr[0], arr[1]).toSet();
for (int i = 2; i < arr.length; i++) {
Set<String> nextCommon = {};
for (String sub in common) {
if (arr[i].contains(sub)) {
nextCommon.add(sub);
}
}
common = nextCommon;
if (common.isEmpty) break;
}
if (common.isEmpty) return 'No one matched';
List<String> sorted = common.toList()
..sort((a, b) => b.length.compareTo(a.length));
return sorted.first;
}
Set<String> helperCommonBTW(String s1, String s2) {
Set<String> res = {};
for (int i = 0; i < s1.length; i++) {
for (int j = 0; j < s2.length; j++) {
int p1 = i, p2 = j;
String temp = '';
while (p1 < s1.length && p2 < s2.length && s1[p1] == s2[p2]) {
temp += s1[p1];
p1++;
p2++;
}
if (temp.isNotEmpty) {
res.add(temp);
}
}
}
return res;
}
int test(List<int> arr) {
//for in
// for(var e in arr){
// if(e == 2){
// return 1;
// }else {
// return 0;
// }
// }
arr.forEach(stdout.writeln);
return -1;
}
bool palinString(String str) {
String rev = "";
for (int i = str.length - 1; i >= 0; i--) {
rev = rev + str[i];
}
return (str == rev);
}
void main() {
// print(palindrome(-12321));
// stringSwap('Amit', 'Rahul');
// String a = 'Amit';
// String b = 'Rahul';
// (a, b) = (b,a);
// print(a);
// print(b);
// starPattern1(5);
// starPatternB(5);
// for(int i =0; i<10; i++){
// print(fib(i));
// }
// print(fact(5));
// int first = 0;
// int second = 1;
//
// print(first);
// print(second);
// for(int i =2; i<10; i++){
// int result = first + second;
// print(result);
// first = second;
// second = result;
// }
// print( fact2(5));
// List<int>
// print(findSubsetsRecursive('abc'));
// print(octalToDecimal(17));
// longestSubstringPrefix(['flower', 'flow', 'float', 'flea']); //, 'flight'
// print(longestSubstring(['flowerset', 'flow', 'flower', 'fl']));
// print(largestKNums([2,56,7,91,28,37], 3));
// print(helperCommonBTW('selmon', 'selow'));
// print(test([2,3,4,5]));
// starPattern1(10);
// Node root = Node(10);
// root.left = Node(20);
// root.right = Node(30);
// root.left!.left = Node(40);
// root.left!.right = Node(50);
// inOrder(root);
//
// Node? root;
// root = insert(root, 20);
// root = insert(root, 10);
// root = insert(root, 30);
//
// inOrder(root);
// Node? root;
// List<int> values = [20, 10, 30, 5, 15];
//
// for (int v in values) {
// root = insert(root, v);
// }
//
// print('InOrder --->');
// inOrder(root);
// print('PreOrder --->');
// preOrder(root);
// print('PostOrder --->');
// postOrder(root);
//
// print(search(root, 6));
// print(search(root, 15));
// deleteTree(root);
// print(climbStairs2(1));
//Input: root = [3,9,20,null,null,15,7]
// Output: 3
// Node root = [3,9,20,15,7] ;
Queue<int> s = Queue();
List<dynamic> names = <dynamic>[];
names.addAll(['Seth', 'Kathy', 'Lars']);
names.add(42);
Node root = Node(3);
root.left = Node(9);
root.right = Node(20);
root.right!.left = Node(15);
root.right!.right = Node(7);
root.right!.right!.right = Node(10);
root.right!.right!.left = Node(6);
print(height(root));
}
Editor is loading...
Leave a Comment